createCommunity method

Future<V2TimValueCallback<String>> createCommunity({
  1. required V2TimGroupInfo info,
  2. required List<V2TimCreateGroupMemberInfo> memberList,
})

Implementation

Future<V2TimValueCallback<String>> createCommunity({
  required V2TimGroupInfo info,
  required List<V2TimCreateGroupMemberInfo> memberList,
}) async {
  if (!TIMManager.instance.isInitSDK()) {
    return V2TimValueCallback<String>(code: TIMErrCode.ERR_SDK_NOT_INITIALIZED.value, desc: "sdk not init");
  }

  String userData = Tools.generateUserData('createCommunity');
  Completer<V2TimValueCallback<String>> completer = Completer();
  void handleApiCallback(Map jsonResult) {
    V2TimValueCallback<Map<String, String>> v2timValueCallback =
        V2TimValueCallback<Map<String, String>>.fromJson(jsonResult);
    String groupID =
        v2timValueCallback.data?['create_group_result_groupid'] ?? '';
    completer.complete(V2TimValueCallback<String>(
        code: v2timValueCallback.code,
        desc: v2timValueCallback.desc,
        data: groupID));
  }

  NativeLibraryManager.timApiValueCallback2Future(userData, handleApiCallback);

  V2TimGroupCreateParam jsonParam = V2TimGroupCreateParam.fromGroupInfo(info);
  jsonParam.memberList = memberList.map((e) => V2TimGroupMember(userID: e.userID, role: GroupMemberRoleTypeEnum.values[e.role])).toList();
  Pointer<Char> pJsonParam = Tools.string2PointerChar(json.encode(jsonParam.toJson()));
  Pointer<Void> pUserData = Tools.string2PointerVoid(userData);
  NativeLibraryManager.bindings.DartCreateCommunity(pJsonParam, pUserData);

  return completer.future;
}