getConversationListByConversationIds method

Future<V2TimValueCallback<List<V2TimConversation>>> getConversationListByConversationIds(
  1. {required List<String> conversationIDList}
)

Implementation

Future<V2TimValueCallback<List<V2TimConversation>>>
    getConversationListByConversationIds({
  required List<String> conversationIDList,
}) async {
  if (!TIMManager.instance.isInitSDK()) {
    return V2TimValueCallback<List<V2TimConversation>>(code: TIMErrCode.ERR_SDK_NOT_INITIALIZED.value, desc: "sdk not init");
  }

  String userData = Tools.generateUserData('getConversationListByConversaionIds');
  Completer<V2TimValueCallback<List<V2TimConversation>>> completer = Completer();
  NativeLibraryManager.timValueCallback2Future<List<V2TimConversation>>(userData, completer);

  List<Map<String, dynamic>> param = [];
  for (String conversationID in conversationIDList) {
    Map<String, dynamic> convParamInfo = {};
    if (conversationID.startsWith('c2c_')) {
      convParamInfo['get_conversation_list_param_conv_type'] = TIMConvType.kTIMConv_C2C.value;
      convParamInfo['get_conversation_list_param_conv_id'] = conversationID.substring(4);

      param.add(convParamInfo);
    } else if (conversationID.startsWith('group_')) {
      convParamInfo['get_conversation_list_param_conv_type'] = TIMConvType.kTIMConv_Group.value;
      convParamInfo['get_conversation_list_param_conv_id'] = conversationID.substring(6);

      param.add(convParamInfo);
    } else {
      print('invalid conversation id: $conversationID');
    }
  }

  if (param.isEmpty) {
    return V2TimValueCallback<List<V2TimConversation>>(code: TIMErrCode.ERR_INVALID_PARAMETERS.value, desc: "no valid conversation id");
  }

  Pointer<Char> pConversationList = Tools.string2PointerChar(json.encode(param));
  Pointer<Void> pUserData = Tools.string2PointerVoid(userData);
  NativeLibraryManager.bindings.DartGetConversation(pConversationList, pUserData);

  return completer.future;
}