login method
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');
}
}