initSdk method

Future<void> initSdk({
  1. required String dataDir,
  2. int? platformID,
})

SyIm.create / init → OpenIM.iMManager.initSDK

Implementation

Future<void> initSdk({required String dataDir, int? platformID}) async {
  await _call('initSDK', () async {
    await OpenIM.iMManager.initSDK(
      platformID: platformID ?? _platformId,
      apiAddr: imApiAddr,
      wsAddr: imWsAddr,
      dataDir: dataDir,
      logLevel: 6,
      listener: OnConnectListener(
        onConnectSuccess: () => onConnectSuccess?.call(),
        onConnecting: () => onConnecting?.call(),
        onConnectFailed: (c, m) => onConnectFailed?.call(c, m),
        onKickedOffline: () => onKickedOffline?.call(),
        onUserTokenExpired: () => onUserTokenExpired?.call(),
      ),
    );
    await OpenIM.iMManager.messageManager.setAdvancedMsgListener(
      OnAdvancedMsgListener(
        onRecvNewMessage: (msg) => _emitIncoming(msg),
        onRecvOfflineNewMessage: (msg) => _emitIncoming(msg),
        onNewRecvMessageRevoked: (info) {
          onMessageRevoked?.call(
            SyImRevokedMessage(
              clientMsgId: info.clientMsgID ?? '',
              revokerId: info.revokerID,
              revokerNickname: info.revokerNickname,
            ),
          );
        },
        onRecvC2CReadReceipt: (list) {
          onRecvC2CReadReceipt?.call(
            list
                .map(
                  (r) => SyImReadReceipt(
                    conversationId: SyImReadReceipts.singleConversationId(
                      _selfUserId ?? '',
                      r.userID ?? '',
                    ),
                    userId: r.userID ?? '',
                    groupId: (r.groupID ?? '').isEmpty ? null : r.groupID,
                    msgIds: List<String>.from(
                      r.msgIDList ?? const <String>[],
                    ),
                    readTime: r.readTime ?? 0,
                  ),
                )
                .toList(),
          );
        },
      ),
    );
    await OpenIM.iMManager.conversationManager.setConversationListener(
      OnConversationListener(
        onNewConversation: (list) {
          onConversationsChanged?.call(list.map(_mapConversation).toList());
          onConversationUpdated?.call();
        },
        onConversationChanged: (list) {
          onConversationsChanged?.call(list.map(_mapConversation).toList());
          onConversationUpdated?.call();
        },
        onTotalUnreadMessageCountChanged: (count) {
          onTotalUnreadChanged?.call(count);
        },
        onInputStatusChanged: (data) {
          onTypingChanged?.call(
            SyImTypingStatus.fromOpenIm(
              userId: data.userID,
              conversationId: data.conversationID,
              platformIds: data.platformIDs,
            ),
          );
        },
      ),
    );
  });
  _inited = true;
}