mirror of
https://github.com/cake-tech/cake_wallet.git
synced 2025-03-21 14:48:53 +00:00
feat: fix resyncing
This commit is contained in:
parent
4ac357fd6a
commit
3c041eed5b
1 changed files with 19 additions and 21 deletions
|
@ -212,6 +212,8 @@ abstract class ElectrumWalletBase
|
||||||
_setListeners(walletInfo.restoreHeight, chainTipParam: _currentChainTip);
|
_setListeners(walletInfo.restoreHeight, chainTipParam: _currentChainTip);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
alwaysScan = false;
|
||||||
|
|
||||||
_isolate?.then((runningIsolate) => runningIsolate.kill(priority: Isolate.immediate));
|
_isolate?.then((runningIsolate) => runningIsolate.kill(priority: Isolate.immediate));
|
||||||
|
|
||||||
if (electrumClient.isConnected) {
|
if (electrumClient.isConnected) {
|
||||||
|
@ -405,7 +407,11 @@ abstract class ElectrumWalletBase
|
||||||
|
|
||||||
await updateFeeRates();
|
await updateFeeRates();
|
||||||
|
|
||||||
syncStatus = SyncedSyncStatus();
|
if (alwaysScan == true) {
|
||||||
|
_setListeners(walletInfo.restoreHeight);
|
||||||
|
} else {
|
||||||
|
syncStatus = SyncedSyncStatus();
|
||||||
|
}
|
||||||
} catch (e, stacktrace) {
|
} catch (e, stacktrace) {
|
||||||
print(stacktrace);
|
print(stacktrace);
|
||||||
print(e.toString());
|
print(e.toString());
|
||||||
|
@ -426,13 +432,6 @@ abstract class ElectrumWalletBase
|
||||||
@action
|
@action
|
||||||
@override
|
@override
|
||||||
Future<void> connectToNode({required Node node}) async {
|
Future<void> connectToNode({required Node node}) async {
|
||||||
final differentNode = this.node?.uri != node.uri || this.node?.useSSL != node.useSSL;
|
|
||||||
|
|
||||||
if (differentNode) {
|
|
||||||
_scripthashesUpdateSubject = {};
|
|
||||||
_chainTipUpdateSubject = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.node = node;
|
this.node = node;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
@ -440,19 +439,17 @@ abstract class ElectrumWalletBase
|
||||||
|
|
||||||
await electrumClient.close();
|
await electrumClient.close();
|
||||||
|
|
||||||
await Timer(Duration(seconds: differentNode ? 0 : 15), () async {
|
electrumClient.onConnectionStatusChange = (bool isConnected) async {
|
||||||
electrumClient.onConnectionStatusChange = (bool isConnected) async {
|
if (syncStatus is SyncingSyncStatus) return;
|
||||||
if (syncStatus is SyncingSyncStatus) return;
|
|
||||||
|
|
||||||
if (isConnected && syncStatus is! SyncedSyncStatus) {
|
if (isConnected && syncStatus is! SyncedSyncStatus) {
|
||||||
syncStatus = ConnectedSyncStatus();
|
syncStatus = ConnectedSyncStatus();
|
||||||
} else if (!isConnected) {
|
} else if (!isConnected) {
|
||||||
syncStatus = LostConnectionSyncStatus();
|
syncStatus = LostConnectionSyncStatus();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
await electrumClient.connectToUri(node.uri, useSSL: node.useSSL);
|
await electrumClient.connectToUri(node.uri, useSSL: node.useSSL);
|
||||||
});
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
print(e.toString());
|
print(e.toString());
|
||||||
syncStatus = FailedSyncStatus();
|
syncStatus = FailedSyncStatus();
|
||||||
|
@ -1747,7 +1744,7 @@ abstract class ElectrumWalletBase
|
||||||
Future<void> _setInitialHeight() async {
|
Future<void> _setInitialHeight() async {
|
||||||
if (_chainTipUpdateSubject != null) return;
|
if (_chainTipUpdateSubject != null) return;
|
||||||
|
|
||||||
_chainTipUpdateSubject = await electrumClient.chainTipSubscribe();
|
_chainTipUpdateSubject = electrumClient.chainTipSubscribe();
|
||||||
_chainTipUpdateSubject?.listen((e) async {
|
_chainTipUpdateSubject?.listen((e) async {
|
||||||
final event = e as Map<String, dynamic>;
|
final event = e as Map<String, dynamic>;
|
||||||
final height = int.parse(event['height'].toString());
|
final height = int.parse(event['height'].toString());
|
||||||
|
@ -1758,7 +1755,7 @@ abstract class ElectrumWalletBase
|
||||||
await walletInfo.updateRestoreHeight(_currentChainTip!);
|
await walletInfo.updateRestoreHeight(_currentChainTip!);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (alwaysScan == true) {
|
if (alwaysScan == true && syncStatus is SyncedSyncStatus) {
|
||||||
_setListeners(walletInfo.restoreHeight);
|
_setListeners(walletInfo.restoreHeight);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -1988,6 +1985,7 @@ Future<void> startRefresh(ScanData scanData) async {
|
||||||
SyncedTipSyncStatus(scanData.chainTip),
|
SyncedTipSyncStatus(scanData.chainTip),
|
||||||
));
|
));
|
||||||
await tweaksSubscription!.close();
|
await tweaksSubscription!.close();
|
||||||
|
await electrumClient.close();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue