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

This commit is contained in:
cyan 2025-05-15 14:17:56 +02:00 committed by GitHub
parent 1b2e3f2ee1
commit 66efce4d70
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -224,19 +224,7 @@ class MoneroWalletService extends WalletService<
final wmaddr = wmPtr.ffiAddress();
final waddr = w.ffiAddress();
openedWalletsByPath.remove("$path/$wallet");
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));
}));
}
await closeWalletAwaitIfShould(wmaddr, waddr);
printV("wallet closed");
}
@ -570,3 +558,19 @@ class MoneroWalletService extends WalletService<
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));
}));
}
}