fix(cw_monero): move isolates to top level functions so WalletBase will not get sent over.

This commit is contained in:
Czarek Nakamoto 2025-05-15 09:02:52 +02:00
parent 40084ec532
commit 86f4e23e4d

View file

@ -224,19 +224,7 @@ class MoneroWalletService extends WalletService<
final wmaddr = wmPtr.ffiAddress(); final wmaddr = wmPtr.ffiAddress();
final waddr = w.ffiAddress(); final waddr = w.ffiAddress();
openedWalletsByPath.remove("$path/$wallet"); openedWalletsByPath.remove("$path/$wallet");
if (Platform.isWindows) { await closeWalletAwaitIfShould(wmaddr, waddr);
await Isolate.run(() {
monero.WalletManager_closeWallet(
Pointer.fromAddress(wmaddr), Pointer.fromAddress(waddr), true);
monero.WalletManager_errorString(Pointer.fromAddress(wmaddr));
});
} else {
unawaited(Isolate.run(() {
monero.WalletManager_closeWallet(
Pointer.fromAddress(wmaddr), Pointer.fromAddress(waddr), true);
monero.WalletManager_errorString(Pointer.fromAddress(wmaddr));
}));
}
printV("wallet closed"); printV("wallet closed");
} }
@ -570,3 +558,19 @@ class MoneroWalletService extends WalletService<
false; false;
} }
} }
Future<void> closeWalletAwaitIfShould(int wmaddr, int waddr) async {
if (Platform.isWindows) {
await Isolate.run(() {
monero.WalletManager_closeWallet(
Pointer.fromAddress(wmaddr), Pointer.fromAddress(waddr), true);
monero.WalletManager_errorString(Pointer.fromAddress(wmaddr));
});
} else {
unawaited(Isolate.run(() {
monero.WalletManager_closeWallet(
Pointer.fromAddress(wmaddr), Pointer.fromAddress(waddr), true);
monero.WalletManager_errorString(Pointer.fromAddress(wmaddr));
}));
}
}