configureOpenIM method
在拿到控制面 imApiAddr/imWsAddr 后初始化 OpenIM。
Implementation
Future<void> configureOpenIM({
required String imApiAddr,
required String imWsAddr,
String? dataDir,
}) async {
final dir = dataDir ??
_dataDir ??
Directory.systemTemp.createTempSync('sy_im').path;
_dataDir = dir;
final adapter = OpenIMAdapter(imApiAddr: imApiAddr, imWsAddr: imWsAddr);
adapter.onConnectSuccess = () => onConnectSuccess?.call();
adapter.onConnecting = () => onConnecting?.call();
adapter.onConnectFailed = (c, m) => onConnectFailed?.call(c, m);
adapter.onKickedOffline = () => onKickedOffline?.call();
adapter.onUserTokenExpired = () => onUserTokenExpired?.call();
adapter.onRecvNewMessage = (id, from, gid, text) {
onRecvNewMessage?.call(id, from, gid, text);
unawaited(_syncUnreadFromSdk());
};
adapter.onRecvC2CReadReceipt = (receipts) {
onRecvC2CReadReceipt?.call(receipts);
onRecvReadReceipts?.call(receipts);
};
adapter.onMessageRevoked = (info) => onMessageRevoked?.call(info);
adapter.onTypingChanged = (status) => onTypingChanged?.call(status);
adapter.onTotalUnreadChanged = (total) {
_publishUnread(() => _unread.applyTotal(total));
};
adapter.onConversationsChanged = (conversations) {
_publishUnread(() => _unread.applyDelta(conversations));
_checkGroupReadWatches(conversations.map((c) => c.conversationId));
};
adapter.onConversationUpdated = () => onConversationUpdated?.call();
await adapter.initSdk(dataDir: dir);
_adapter = adapter;
_initialized = true;
}