login method

  1. @override
Future<Map<String, dynamic>> login({
  1. required String userID,
  2. required String userSig,
})
override

Implementation

@override
Future<Map<String, dynamic>> login({ required String userID, required String userSig }) async {
  try {
    final result = await _pluginChat.login(userID, userSig).toDart;
    final rawData = result.dartify();
    if (rawData is Map<Object?, Object?>) {
      final data = <String, dynamic>{};
      rawData.forEach((key, value) {
        data[key.toString()] = value;
      });
      int code = data['code'];
      if (code == 0) {
        ImState.setChatLoginInfo(ImLoginInfoEntity.fromJson({
          'userId': userID,
          'userSig': userSig,
        }));
      } else {
        ImState.setChatLoginInfo(null);
      }

      try {
        if (ImState.callInstance.value == null) {
          if (ImState.initCallInstance.value) {
            final callInstance = await _pluginCall.initCall(ImState.imSdkAppID.value!, ImState.chatInstance.value, convertCallEventConfigToJSMap(ImState.callEventCallListenerConfig.value).jsify() as JSObject).toDart;
            ImState.callInstance.value = callInstance;
            await Future.delayed(Duration(milliseconds: 500));
          }
        }
        if (ImState.callInstance.value != null) {
          if (kDebugMode) {
            print('登录 IM Call >>>');
          }
          await _pluginCall.login(userID, userSig).toDart;
        }
      } catch(_) {}

      return data;
    }
    return {};
  } catch (e) {
    throw Exception('登录失败: $e');
  }
}