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 15:17:56 +03:00
committed by GitHub
parent 1b2e3f2ee1
commit 66efce4d70
+17 -13
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));
}));
}
}