store() on bad network (#1543)

* fix: for storing on bad network connection.

* feat from standup

* fix missing declaration

* remove forcing trusted daemon flag [skip ci]

---------

Co-authored-by: OmarHatem <omarh.ismail1@gmail.com>
This commit is contained in:
cyan 2024-07-21 02:43:09 +02:00 committed by GitHub
parent 341e06196d
commit 7514d851ce
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 29 additions and 2 deletions

View file

@ -121,9 +121,23 @@ void setRecoveringFromSeed({required bool isRecovery}) =>
monero.Wallet_setRecoveringFromSeed(wptr!, recoveringFromSeed: isRecovery); monero.Wallet_setRecoveringFromSeed(wptr!, recoveringFromSeed: isRecovery);
final storeMutex = Mutex(); final storeMutex = Mutex();
int lastStorePointer = 0;
int lastStoreHeight = 0;
void storeSync() async { void storeSync() async {
await storeMutex.acquire();
final addr = wptr!.address; final addr = wptr!.address;
final synchronized = await Isolate.run(() {
return monero.Wallet_synchronized(Pointer.fromAddress(addr));
});
if (lastStorePointer == wptr!.address &&
lastStoreHeight + 5000 < monero.Wallet_blockChainHeight(wptr!) &&
!synchronized) {
return;
}
lastStorePointer = wptr!.address;
lastStoreHeight = monero.Wallet_blockChainHeight(wptr!);
await storeMutex.acquire();
await Isolate.run(() { await Isolate.run(() {
monero.Wallet_store(Pointer.fromAddress(addr)); monero.Wallet_store(Pointer.fromAddress(addr));
}); });

View file

@ -126,9 +126,22 @@ void setRecoveringFromSeed({required bool isRecovery}) =>
wownero.Wallet_setRecoveringFromSeed(wptr!, recoveringFromSeed: isRecovery); wownero.Wallet_setRecoveringFromSeed(wptr!, recoveringFromSeed: isRecovery);
final storeMutex = Mutex(); final storeMutex = Mutex();
int lastStorePointer = 0;
int lastStoreHeight = 0;
void storeSync() async { void storeSync() async {
await storeMutex.acquire();
final addr = wptr!.address; final addr = wptr!.address;
final synchronized = await Isolate.run(() {
return wownero.Wallet_synchronized(Pointer.fromAddress(addr));
});
if (lastStorePointer == wptr!.address &&
lastStoreHeight + 5000 < wownero.Wallet_blockChainHeight(wptr!) &&
!synchronized) {
return;
}
lastStorePointer = wptr!.address;
lastStoreHeight = wownero.Wallet_blockChainHeight(wptr!);
await storeMutex.acquire();
Isolate.run(() { Isolate.run(() {
wownero.Wallet_store(Pointer.fromAddress(addr)); wownero.Wallet_store(Pointer.fromAddress(addr));
}); });