fix(cw_monero): move isolates to top level functions so WalletBase will not get sent over. (#2269)
cyan committed
May 15, 2025 at 14:17 UTC
66efce4d702b8a3f2eb35d03641083547620b3ef
1 file changed
+17
-13
cw_monero/lib/monero_wallet_service.dart
+17
-13
@@ -224,19 +224,7 @@ class MoneroWalletService extends WalletService<
224
final wmaddr = wmPtr.ffiAddress();
225
final waddr = w.ffiAddress();
226
openedWalletsByPath.remove("$path/$wallet");
227
- if (Platform.isWindows) {
228
- await Isolate.run(() {
229
- monero.WalletManager_closeWallet(
230
- Pointer.fromAddress(wmaddr), Pointer.fromAddress(waddr), true);
231
- monero.WalletManager_errorString(Pointer.fromAddress(wmaddr));
232
- });
233
- } else {
234
- unawaited(Isolate.run(() {
235
- monero.WalletManager_closeWallet(
236
- Pointer.fromAddress(wmaddr), Pointer.fromAddress(waddr), true);
237
- monero.WalletManager_errorString(Pointer.fromAddress(wmaddr));
238
- }));
239
- }
227
+ await closeWalletAwaitIfShould(wmaddr, waddr);
228
printV("wallet closed");
229
}
230
@@ -570,3 +558,19 @@ class MoneroWalletService extends WalletService<
558
false;
559
}
560
}
561
+
562
+Future<void> closeWalletAwaitIfShould(int wmaddr, int waddr) async {
563
+ if (Platform.isWindows) {
564
+ await Isolate.run(() {
565
+ monero.WalletManager_closeWallet(
566
+ Pointer.fromAddress(wmaddr), Pointer.fromAddress(waddr), true);
567
+ monero.WalletManager_errorString(Pointer.fromAddress(wmaddr));
568
+ });
569
+ } else {
570
+ unawaited(Isolate.run(() {
571
+ monero.WalletManager_closeWallet(
572
+ Pointer.fromAddress(wmaddr), Pointer.fromAddress(waddr), true);
573
+ monero.WalletManager_errorString(Pointer.fromAddress(wmaddr));
574
+ }));
575
+ }
576
+}
\ No newline at end of file