onMessage method

void onMessage(
  1. dynamic jsMessage
)

Implementation

void onMessage(dynamic jsMessage) {
  final Map<String, dynamic> msg = dartify<Map<String, dynamic>>(jsMessage);
  final String event = msg['event'] ?? '';
  final String channel = msg['channel'] ?? '';
  final Map<String, dynamic> data = msg['data'] ?? {};
  String? userId = data['user_id'];
  final Map<String, dynamic>? userInfo = data['user_info'];

  if (event == 'pusher_internal:subscription_error') {
    methodChannel!.invokeMethod(
        'onSubscriptionError', {'message': msg['error'], 'error': data});
  } else if (event == 'pusher_internal:member_added') {
    methodChannel!.invokeMethod('onMemberAdded', {
      'channelName': channel,
      'user': {
        'userId': userId,
        'userInfo': userInfo,
      }
    });
  } else if (event == 'pusher_internal:member_removed') {
    methodChannel!.invokeMethod('onMemberRemoved', {
      'channelName': channel,
      'user': {
        'userId': userId,
        'userInfo': userInfo,
      }
    });
  } else {
    if (event == 'pusher_internal:subscription_succeeded') {
      if (channel.startsWith('presence-')) {
        final presenceChannel = pusher!.channel(channel) as PresenceChannel;
        userId = presenceChannel.members.myID;
      }
    }
    methodChannel!.invokeMethod('onEvent', {
      'channelName': channel,
      'eventName': event,
      'data': data,
      'userId': userId,
    });
  }
}