invite method

Future<V2TimValueCallback<String>> invite({
  1. required String invitee,
  2. required String data,
  3. int timeout = 30,
  4. bool onlineUserOnly = false,
  5. OfflinePushInfo? offlinePushInfo,
})

Implementation

Future<V2TimValueCallback<String>> invite({
  required String invitee,
  required String data,
  int timeout = 30,
  bool onlineUserOnly = false,
  OfflinePushInfo? offlinePushInfo,
}) async {
  if (!TIMManager.instance.isInitSDK()) {
    return V2TimValueCallback<String>(code: TIMErrCode.ERR_SDK_NOT_INITIALIZED.value, desc: "sdk not init");
  }

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

  Pointer<Char> pInvitee = Tools.string2PointerChar(invitee);
  Pointer<Char> pData = Tools.string2PointerChar(data);
  Pointer<Char> pOfflinePushInfo = Tools.string2PointerChar(json.encode(offlinePushInfo?.toJson() ?? {}));
  Pointer<Void> pUserData = Tools.string2PointerVoid(userData);
  NativeLibraryManager.bindings.DartInvite(pInvitee, pData, onlineUserOnly, pOfflinePushInfo, timeout, Pointer<Char>.fromAddress(0), pUserData);

  return completer.future;
}