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();
  String inviteID = '';
  void handleApiCallback(Map jsonResult) {
    V2TimValueCallback<String> callbackResult = V2TimValueCallback<String>.fromJson(jsonResult);
    callbackResult.data = inviteID;
    completer.complete(callbackResult);
  }
  NativeLibraryManager.timApiValueCallback2Future(userData, handleApiCallback);

  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);
  Pointer<Char> pInviteID = NativeLibraryManager.bindings.DartInvite(pInvitee, pData, onlineUserOnly, pOfflinePushInfo, timeout, Pointer<Char>.fromAddress(0), pUserData);
  inviteID = Tools.pointerChar2String(pInviteID);

  return completer.future;
}