askarStoreCopy function

Future<AskarResult<StoreHandle>> askarStoreCopy(
  1. StoreHandle handle,
  2. String targetUri,
  3. StoreKeyMethod? keyMethod,
  4. String? passKey,
  5. bool recreate,
)

Implementation

Future<AskarResult<StoreHandle>> askarStoreCopy(
  StoreHandle handle,
  String targetUri,
  StoreKeyMethod? keyMethod,
  String? passKey,
  bool recreate,
) async {
  Pointer<Utf8> targetUriPointer = nullptr;
  Pointer<Utf8> keyMethodPointer = nullptr;
  Pointer<Utf8> passKeyPointer = nullptr;

  try {
    targetUriPointer = targetUri.toNativeUtf8();
    keyMethodPointer = (keyMethod == null ? "" : keyMethod.value).toNativeUtf8();
    passKeyPointer = (passKey ?? "").toNativeUtf8();

    final callback = newCallbackWithHandle();

    final initialResult = nativeAskarStoreCopy(
      handle.toInt(),
      targetUriPointer,
      keyMethodPointer,
      passKeyPointer,
      boolToInt(recreate),
      callback.nativeCallable.nativeFunction,
      callback.id,
    );

    final callbackResult = await callback.handleResult(initialResult);

    return AskarResult(callbackResult.errorCode, StoreHandle(callbackResult.value));
  } finally {
    freePointer(targetUriPointer);
    freePointer(keyMethodPointer);
    freePointer(passKeyPointer);
  }
}