createGroup method

Future<V2TimValueCallback<String>> createGroup({
  1. String? groupID,
  2. required String groupType,
  3. required String groupName,
  4. String? notification,
  5. String? introduction,
  6. String? faceUrl,
  7. bool? isAllMuted,
  8. bool? isSupportTopic = false,
  9. GroupAddOptTypeEnum? addOpt,
  10. List<V2TimGroupMember>? memberList,
  11. GroupAddOptTypeEnum? approveOpt,
  12. bool? isEnablePermissionGroup,
  13. int? defaultPermissions,
})

Implementation

Future<V2TimValueCallback<String>> createGroup({
  String? groupID,
  required String groupType,
  required String groupName,
  String? notification,
  String? introduction,
  String? faceUrl,
  bool? isAllMuted,
  bool? isSupportTopic = false,
  GroupAddOptTypeEnum? addOpt,
  List<V2TimGroupMember>? memberList,
  GroupAddOptTypeEnum? approveOpt,
  bool? isEnablePermissionGroup,
  int? defaultPermissions,
}) async {
  if (!TIMManager.instance.isInitSDK()) {
    return V2TimValueCallback<String>(code: TIMErrCode.ERR_SDK_NOT_INITIALIZED.value, desc: "sdk not init");
  }

  String userData = Tools.generateUserData('createGroup');
  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 createParams = V2TimGroupCreateParam(
    groupID: groupID,
    groupType: groupType,
    groupName: groupName,
    notification: notification,
    introduction: introduction,
    faceUrl: faceUrl,
    isAllMuted: isAllMuted,
    isSupportTopic: isSupportTopic,
    addOpt: addOpt,
    memberList: memberList,
    approveOpt: approveOpt,
    isEnablePermissionGroup: isEnablePermissionGroup,
    defaultPermissions: defaultPermissions
  );
  var temp = json.encode(createParams.toJson());
  // Pointer<Char> pCreateParams = Tools.string2PointerChar(json.encode(createParams.toJson()));
  Pointer<Char> pCreateParams = Tools.string2PointerChar(temp);
  Pointer<Void> pUserData = Tools.string2PointerVoid(userData);
  NativeLibraryManager.bindings.DartCreateGroup(pCreateParams, pUserData);

  return completer.future;
}