ZegoUIKitAdvanceInvitationSendProtocol.fromJson constructor

ZegoUIKitAdvanceInvitationSendProtocol.fromJson(
  1. Map<String, dynamic> json
)

Implementation

factory ZegoUIKitAdvanceInvitationSendProtocol.fromJson(
    Map<String, dynamic> json) {
  ZegoUIKitUser inviter = ZegoUIKitUser.empty();
  if (json.containsKey('inviter')) {
    inviter = ZegoUIKitUser.fromJson(
      json['inviter'] as Map<String, dynamic>? ?? {},
    );
  }

  /// for support web invitation protocol
  else if (json.containsKey('inviter_id') ||
      json.containsKey('inviter_name')) {
    inviter = ZegoUIKitUser(
      id: json['inviter_id'] as String? ?? '',
      name: json['inviter_name'] as String? ?? '',
    );
  }

  List<String> invitees = [];
  if (json.containsKey('invitees')) {
    invitees = List<String>.from(json['invitees']);
  }

  String customData = '';
  if (json.containsKey('custom_data')) {
    customData = json['custom_data'] as String? ?? '';
  }

  /// for support web invitation protocol
  else if (json.containsKey('data')) {
    customData = json['data'] as String? ?? '';

    try {
      final extendedDataMap = jsonDecode(customData) as Map<String, dynamic>;
      if (extendedDataMap.containsKey('inviter')) {
        inviter = ZegoUIKitUser.fromJson(
          extendedDataMap['inviter'] as Map<String, dynamic>? ?? {},
        );
      }

      if (extendedDataMap.containsKey('invitees')) {
        final webInviteesMap =
            extendedDataMap['invitees'] as List<dynamic>? ?? [];
        invitees = webInviteesMap.map((item) {
          final inviteeMap = item as Map<String, dynamic>? ?? {};
          return inviteeMap['user_id'] as String? ?? '';
        }).toList();
      }
    } catch (e) {
      ZegoLoggerService.logInfo(
        'fromJson, e:$e',
        tag: 'uikit',
        subTag: 'ZegoUIKitAdvanceInvitationSendProtocol',
      );
    }
  }

  return ZegoUIKitAdvanceInvitationSendProtocol(
    inviter: inviter,
    invitees: invitees,
    type: json['type'] as int? ?? -1,
    customData: customData,
  );
}