2021-12-24 12:52:08 +00:00
|
|
|
abstract class SyncStatus {
|
|
|
|
const SyncStatus();
|
|
|
|
double progress();
|
|
|
|
}
|
|
|
|
|
2024-08-11 23:49:45 +00:00
|
|
|
class StartingScanSyncStatus extends SyncStatus {
|
2024-09-20 14:24:25 +00:00
|
|
|
StartingScanSyncStatus(this.beginHeight);
|
|
|
|
|
|
|
|
final int beginHeight;
|
2024-08-11 23:49:45 +00:00
|
|
|
@override
|
|
|
|
double progress() => 0.0;
|
|
|
|
}
|
|
|
|
|
2021-12-24 12:52:08 +00:00
|
|
|
class SyncingSyncStatus extends SyncStatus {
|
|
|
|
SyncingSyncStatus(this.blocksLeft, this.ptc);
|
|
|
|
|
|
|
|
final double ptc;
|
|
|
|
final int blocksLeft;
|
|
|
|
|
|
|
|
@override
|
|
|
|
double progress() => ptc;
|
|
|
|
|
|
|
|
@override
|
|
|
|
String toString() => '$blocksLeft';
|
Cw 453 (#1306)
* feat: rebase btc-addr-types, migrate to bitcoin_base
* feat: allow scanning elect-rs using get_tweaks
* feat: scanning and adding addresses working with getTweaks, add btc SP address type
* chore: pubspec.lock
* chore: pubspec.lock
* fix: scan when switching, fix multiple unspents in same tx
* fix: initial scan
* fix: initial scan
* fix: scanning issues
* fix: sync, storing silent unspents
* chore: deps
* fix: label issues, clear spent utxo
* chore: deps
* fix: build
* fix: missing types
* feat: new electrs API & changes, fixes for last block scanning
* feat: Scan Silent Payments homepage toggle
* chore: build configure
* feat: generic fixes, testnet UI improvements, useSSL on bitcoin nodes
* fix: invalid Object in sendData
* feat: improve addresses page & address book displays
* feat: silent payments labeled addresses disclaimer
* fix: missing i18n
* chore: print
* feat: single block scan, rescan by date working for btc mainnet
* feat: new cake features page replace market page, move sp scan toggle, auto switch node pop up alert
* feat: delete silent addresses
* fix: red dot in non ssl nodes
* fix: inconsistent connection states, fix tx history
* fix: tx & balance displays, cpfp sending
* feat: new rust lib
* chore: node path
* fix: check node based on network
* fix: missing txcount from addresses
* style: padding in feature page cards
* fix: restore not getting all wallet addresses by type
* fix: auto switch node broken
* fix: silent payment txs not being restored
* feat: change scanning to subscription model, sync improvements
* fix: scan re-subscription
* fix: default nodes
* fix: improve scanning by date, fix single block scan
* refactor: common function for input tx selection
* fix: nodes & build
* fix: send all with multiple outs
* refactor: unchanged file
* Update pr_test_build.yml
* chore: upgrade
* chore: merge changes
* refactor: unchanged files [skip ci]
* fix: scan fixes, add date, allow sending while scanning
* feat: sync fixes, sp settings
* feat: fix resyncing
* fix: date from height logic, status disconnected & chain tip get
* fix: params
* feat: electrum migration if using cake electrum
* fix nodes
update versions
* re-enable tron
* update sp_scanner to work on iOS [skip ci]
* fix: wrong socket for old electrum nodes
* Fix unchecked wallet type call
* fix: double balance
* feat: node domain
* fix: menu name
* fix: update tip on set scanning
* fix: connection switching back and forth
* feat: check if node is electrs, and supports sp
* chore: fix build
* minor enhancements
* fixes and enhancements
* solve conflicts with main
* fix: status toggle
* minor enhancement
* Monero.com fixes
* update sp_scanner to include windows and linux
---------
Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
2024-05-29 14:43:48 +00:00
|
|
|
|
|
|
|
factory SyncingSyncStatus.fromHeightValues(int chainTip, int initialSyncHeight, int syncHeight) {
|
|
|
|
final track = chainTip - initialSyncHeight;
|
|
|
|
final diff = track - (chainTip - syncHeight);
|
|
|
|
final ptc = diff <= 0 ? 0.0 : diff / track;
|
|
|
|
final left = chainTip - syncHeight;
|
|
|
|
|
|
|
|
// sum 1 because if at the chain tip, will say "0 blocks left"
|
|
|
|
return SyncingSyncStatus(left + 1, ptc);
|
|
|
|
}
|
2021-12-24 12:52:08 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
class SyncedSyncStatus extends SyncStatus {
|
|
|
|
@override
|
|
|
|
double progress() => 1.0;
|
|
|
|
}
|
|
|
|
|
Cw 453 (#1306)
* feat: rebase btc-addr-types, migrate to bitcoin_base
* feat: allow scanning elect-rs using get_tweaks
* feat: scanning and adding addresses working with getTweaks, add btc SP address type
* chore: pubspec.lock
* chore: pubspec.lock
* fix: scan when switching, fix multiple unspents in same tx
* fix: initial scan
* fix: initial scan
* fix: scanning issues
* fix: sync, storing silent unspents
* chore: deps
* fix: label issues, clear spent utxo
* chore: deps
* fix: build
* fix: missing types
* feat: new electrs API & changes, fixes for last block scanning
* feat: Scan Silent Payments homepage toggle
* chore: build configure
* feat: generic fixes, testnet UI improvements, useSSL on bitcoin nodes
* fix: invalid Object in sendData
* feat: improve addresses page & address book displays
* feat: silent payments labeled addresses disclaimer
* fix: missing i18n
* chore: print
* feat: single block scan, rescan by date working for btc mainnet
* feat: new cake features page replace market page, move sp scan toggle, auto switch node pop up alert
* feat: delete silent addresses
* fix: red dot in non ssl nodes
* fix: inconsistent connection states, fix tx history
* fix: tx & balance displays, cpfp sending
* feat: new rust lib
* chore: node path
* fix: check node based on network
* fix: missing txcount from addresses
* style: padding in feature page cards
* fix: restore not getting all wallet addresses by type
* fix: auto switch node broken
* fix: silent payment txs not being restored
* feat: change scanning to subscription model, sync improvements
* fix: scan re-subscription
* fix: default nodes
* fix: improve scanning by date, fix single block scan
* refactor: common function for input tx selection
* fix: nodes & build
* fix: send all with multiple outs
* refactor: unchanged file
* Update pr_test_build.yml
* chore: upgrade
* chore: merge changes
* refactor: unchanged files [skip ci]
* fix: scan fixes, add date, allow sending while scanning
* feat: sync fixes, sp settings
* feat: fix resyncing
* fix: date from height logic, status disconnected & chain tip get
* fix: params
* feat: electrum migration if using cake electrum
* fix nodes
update versions
* re-enable tron
* update sp_scanner to work on iOS [skip ci]
* fix: wrong socket for old electrum nodes
* Fix unchecked wallet type call
* fix: double balance
* feat: node domain
* fix: menu name
* fix: update tip on set scanning
* fix: connection switching back and forth
* feat: check if node is electrs, and supports sp
* chore: fix build
* minor enhancements
* fixes and enhancements
* solve conflicts with main
* fix: status toggle
* minor enhancement
* Monero.com fixes
* update sp_scanner to include windows and linux
---------
Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
2024-05-29 14:43:48 +00:00
|
|
|
class SyncedTipSyncStatus extends SyncedSyncStatus {
|
|
|
|
SyncedTipSyncStatus(this.tip);
|
|
|
|
|
|
|
|
final int tip;
|
|
|
|
}
|
|
|
|
|
2024-10-28 15:16:23 +00:00
|
|
|
class SynchronizingSyncStatus extends SyncStatus {
|
Cw 453 (#1306)
* feat: rebase btc-addr-types, migrate to bitcoin_base
* feat: allow scanning elect-rs using get_tweaks
* feat: scanning and adding addresses working with getTweaks, add btc SP address type
* chore: pubspec.lock
* chore: pubspec.lock
* fix: scan when switching, fix multiple unspents in same tx
* fix: initial scan
* fix: initial scan
* fix: scanning issues
* fix: sync, storing silent unspents
* chore: deps
* fix: label issues, clear spent utxo
* chore: deps
* fix: build
* fix: missing types
* feat: new electrs API & changes, fixes for last block scanning
* feat: Scan Silent Payments homepage toggle
* chore: build configure
* feat: generic fixes, testnet UI improvements, useSSL on bitcoin nodes
* fix: invalid Object in sendData
* feat: improve addresses page & address book displays
* feat: silent payments labeled addresses disclaimer
* fix: missing i18n
* chore: print
* feat: single block scan, rescan by date working for btc mainnet
* feat: new cake features page replace market page, move sp scan toggle, auto switch node pop up alert
* feat: delete silent addresses
* fix: red dot in non ssl nodes
* fix: inconsistent connection states, fix tx history
* fix: tx & balance displays, cpfp sending
* feat: new rust lib
* chore: node path
* fix: check node based on network
* fix: missing txcount from addresses
* style: padding in feature page cards
* fix: restore not getting all wallet addresses by type
* fix: auto switch node broken
* fix: silent payment txs not being restored
* feat: change scanning to subscription model, sync improvements
* fix: scan re-subscription
* fix: default nodes
* fix: improve scanning by date, fix single block scan
* refactor: common function for input tx selection
* fix: nodes & build
* fix: send all with multiple outs
* refactor: unchanged file
* Update pr_test_build.yml
* chore: upgrade
* chore: merge changes
* refactor: unchanged files [skip ci]
* fix: scan fixes, add date, allow sending while scanning
* feat: sync fixes, sp settings
* feat: fix resyncing
* fix: date from height logic, status disconnected & chain tip get
* fix: params
* feat: electrum migration if using cake electrum
* fix nodes
update versions
* re-enable tron
* update sp_scanner to work on iOS [skip ci]
* fix: wrong socket for old electrum nodes
* Fix unchecked wallet type call
* fix: double balance
* feat: node domain
* fix: menu name
* fix: update tip on set scanning
* fix: connection switching back and forth
* feat: check if node is electrs, and supports sp
* chore: fix build
* minor enhancements
* fixes and enhancements
* solve conflicts with main
* fix: status toggle
* minor enhancement
* Monero.com fixes
* update sp_scanner to include windows and linux
---------
Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
2024-05-29 14:43:48 +00:00
|
|
|
@override
|
|
|
|
double progress() => 0.0;
|
|
|
|
}
|
|
|
|
|
2021-12-24 12:52:08 +00:00
|
|
|
class NotConnectedSyncStatus extends SyncStatus {
|
|
|
|
const NotConnectedSyncStatus();
|
|
|
|
|
|
|
|
@override
|
|
|
|
double progress() => 0.0;
|
|
|
|
}
|
|
|
|
|
2022-11-09 10:14:21 +00:00
|
|
|
class AttemptingSyncStatus extends SyncStatus {
|
2021-12-24 12:52:08 +00:00
|
|
|
@override
|
|
|
|
double progress() => 0.0;
|
|
|
|
}
|
|
|
|
|
2024-09-20 14:24:25 +00:00
|
|
|
class AttemptingScanSyncStatus extends SyncStatus {
|
|
|
|
@override
|
|
|
|
double progress() => 0.0;
|
|
|
|
}
|
|
|
|
|
2024-10-05 00:30:52 +00:00
|
|
|
class FailedSyncStatus extends NotConnectedSyncStatus {
|
|
|
|
String? error;
|
|
|
|
FailedSyncStatus({this.error});
|
|
|
|
|
|
|
|
@override
|
|
|
|
String toString() => error ?? super.toString();
|
|
|
|
}
|
2021-12-24 12:52:08 +00:00
|
|
|
|
|
|
|
class ConnectingSyncStatus extends SyncStatus {
|
|
|
|
@override
|
|
|
|
double progress() => 0.0;
|
|
|
|
}
|
|
|
|
|
|
|
|
class ConnectedSyncStatus extends SyncStatus {
|
|
|
|
@override
|
|
|
|
double progress() => 0.0;
|
|
|
|
}
|
|
|
|
|
Cw 453 (#1306)
* feat: rebase btc-addr-types, migrate to bitcoin_base
* feat: allow scanning elect-rs using get_tweaks
* feat: scanning and adding addresses working with getTweaks, add btc SP address type
* chore: pubspec.lock
* chore: pubspec.lock
* fix: scan when switching, fix multiple unspents in same tx
* fix: initial scan
* fix: initial scan
* fix: scanning issues
* fix: sync, storing silent unspents
* chore: deps
* fix: label issues, clear spent utxo
* chore: deps
* fix: build
* fix: missing types
* feat: new electrs API & changes, fixes for last block scanning
* feat: Scan Silent Payments homepage toggle
* chore: build configure
* feat: generic fixes, testnet UI improvements, useSSL on bitcoin nodes
* fix: invalid Object in sendData
* feat: improve addresses page & address book displays
* feat: silent payments labeled addresses disclaimer
* fix: missing i18n
* chore: print
* feat: single block scan, rescan by date working for btc mainnet
* feat: new cake features page replace market page, move sp scan toggle, auto switch node pop up alert
* feat: delete silent addresses
* fix: red dot in non ssl nodes
* fix: inconsistent connection states, fix tx history
* fix: tx & balance displays, cpfp sending
* feat: new rust lib
* chore: node path
* fix: check node based on network
* fix: missing txcount from addresses
* style: padding in feature page cards
* fix: restore not getting all wallet addresses by type
* fix: auto switch node broken
* fix: silent payment txs not being restored
* feat: change scanning to subscription model, sync improvements
* fix: scan re-subscription
* fix: default nodes
* fix: improve scanning by date, fix single block scan
* refactor: common function for input tx selection
* fix: nodes & build
* fix: send all with multiple outs
* refactor: unchanged file
* Update pr_test_build.yml
* chore: upgrade
* chore: merge changes
* refactor: unchanged files [skip ci]
* fix: scan fixes, add date, allow sending while scanning
* feat: sync fixes, sp settings
* feat: fix resyncing
* fix: date from height logic, status disconnected & chain tip get
* fix: params
* feat: electrum migration if using cake electrum
* fix nodes
update versions
* re-enable tron
* update sp_scanner to work on iOS [skip ci]
* fix: wrong socket for old electrum nodes
* Fix unchecked wallet type call
* fix: double balance
* feat: node domain
* fix: menu name
* fix: update tip on set scanning
* fix: connection switching back and forth
* feat: check if node is electrs, and supports sp
* chore: fix build
* minor enhancements
* fixes and enhancements
* solve conflicts with main
* fix: status toggle
* minor enhancement
* Monero.com fixes
* update sp_scanner to include windows and linux
---------
Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
2024-05-29 14:43:48 +00:00
|
|
|
class UnsupportedSyncStatus extends NotConnectedSyncStatus {}
|
|
|
|
|
|
|
|
class TimedOutSyncStatus extends NotConnectedSyncStatus {
|
2021-12-24 12:52:08 +00:00
|
|
|
@override
|
Cw 453 (#1306)
* feat: rebase btc-addr-types, migrate to bitcoin_base
* feat: allow scanning elect-rs using get_tweaks
* feat: scanning and adding addresses working with getTweaks, add btc SP address type
* chore: pubspec.lock
* chore: pubspec.lock
* fix: scan when switching, fix multiple unspents in same tx
* fix: initial scan
* fix: initial scan
* fix: scanning issues
* fix: sync, storing silent unspents
* chore: deps
* fix: label issues, clear spent utxo
* chore: deps
* fix: build
* fix: missing types
* feat: new electrs API & changes, fixes for last block scanning
* feat: Scan Silent Payments homepage toggle
* chore: build configure
* feat: generic fixes, testnet UI improvements, useSSL on bitcoin nodes
* fix: invalid Object in sendData
* feat: improve addresses page & address book displays
* feat: silent payments labeled addresses disclaimer
* fix: missing i18n
* chore: print
* feat: single block scan, rescan by date working for btc mainnet
* feat: new cake features page replace market page, move sp scan toggle, auto switch node pop up alert
* feat: delete silent addresses
* fix: red dot in non ssl nodes
* fix: inconsistent connection states, fix tx history
* fix: tx & balance displays, cpfp sending
* feat: new rust lib
* chore: node path
* fix: check node based on network
* fix: missing txcount from addresses
* style: padding in feature page cards
* fix: restore not getting all wallet addresses by type
* fix: auto switch node broken
* fix: silent payment txs not being restored
* feat: change scanning to subscription model, sync improvements
* fix: scan re-subscription
* fix: default nodes
* fix: improve scanning by date, fix single block scan
* refactor: common function for input tx selection
* fix: nodes & build
* fix: send all with multiple outs
* refactor: unchanged file
* Update pr_test_build.yml
* chore: upgrade
* chore: merge changes
* refactor: unchanged files [skip ci]
* fix: scan fixes, add date, allow sending while scanning
* feat: sync fixes, sp settings
* feat: fix resyncing
* fix: date from height logic, status disconnected & chain tip get
* fix: params
* feat: electrum migration if using cake electrum
* fix nodes
update versions
* re-enable tron
* update sp_scanner to work on iOS [skip ci]
* fix: wrong socket for old electrum nodes
* Fix unchecked wallet type call
* fix: double balance
* feat: node domain
* fix: menu name
* fix: update tip on set scanning
* fix: connection switching back and forth
* feat: check if node is electrs, and supports sp
* chore: fix build
* minor enhancements
* fixes and enhancements
* solve conflicts with main
* fix: status toggle
* minor enhancement
* Monero.com fixes
* update sp_scanner to include windows and linux
---------
Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
2024-05-29 14:43:48 +00:00
|
|
|
String toString() => 'Timed out';
|
|
|
|
}
|
|
|
|
|
|
|
|
class LostConnectionSyncStatus extends NotConnectedSyncStatus {
|
|
|
|
@override
|
|
|
|
String toString() => 'Reconnecting';
|
2024-10-05 00:30:52 +00:00
|
|
|
}
|
2024-11-05 15:49:07 +00:00
|
|
|
|
|
|
|
Map<String, dynamic> syncStatusToJson(SyncStatus? status) {
|
|
|
|
if (status == null) {
|
|
|
|
return {};
|
|
|
|
}
|
2024-11-16 17:53:00 +00:00
|
|
|
|
2024-11-05 15:49:07 +00:00
|
|
|
return {
|
|
|
|
'progress': status.progress(),
|
|
|
|
'type': status.runtimeType.toString(),
|
|
|
|
'data': status is SyncingSyncStatus
|
|
|
|
? {'blocksLeft': status.blocksLeft, 'ptc': status.ptc}
|
|
|
|
: status is SyncedTipSyncStatus
|
|
|
|
? {'tip': status.tip}
|
|
|
|
: status is FailedSyncStatus
|
|
|
|
? {'error': status.error}
|
|
|
|
: status is StartingScanSyncStatus
|
|
|
|
? {'beginHeight': status.beginHeight}
|
|
|
|
: null
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
SyncStatus syncStatusFromJson(Map<String, dynamic> json) {
|
|
|
|
final type = json['type'] as String;
|
|
|
|
final data = json['data'] as Map<String, dynamic>?;
|
|
|
|
|
|
|
|
switch (type) {
|
|
|
|
case 'StartingScanSyncStatus':
|
|
|
|
return StartingScanSyncStatus(data!['beginHeight'] as int);
|
|
|
|
case 'SyncingSyncStatus':
|
|
|
|
return SyncingSyncStatus(data!['blocksLeft'] as int, data['ptc'] as double);
|
|
|
|
case 'SyncedTipSyncStatus':
|
|
|
|
return SyncedTipSyncStatus(data!['tip'] as int);
|
2024-11-16 17:53:00 +00:00
|
|
|
case 'SyncedSyncStatus':
|
|
|
|
return SyncedSyncStatus();
|
2024-11-05 15:49:07 +00:00
|
|
|
case 'FailedSyncStatus':
|
|
|
|
return FailedSyncStatus(error: data!['error'] as String?);
|
|
|
|
case 'SynchronizingSyncStatus':
|
|
|
|
return SynchronizingSyncStatus();
|
|
|
|
case 'NotConnectedSyncStatus':
|
|
|
|
return NotConnectedSyncStatus();
|
|
|
|
case 'AttemptingSyncStatus':
|
|
|
|
return AttemptingSyncStatus();
|
|
|
|
case 'AttemptingScanSyncStatus':
|
|
|
|
return AttemptingScanSyncStatus();
|
|
|
|
case 'ConnectedSyncStatus':
|
|
|
|
return ConnectedSyncStatus();
|
|
|
|
case 'ConnectingSyncStatus':
|
|
|
|
return ConnectingSyncStatus();
|
|
|
|
case 'UnsupportedSyncStatus':
|
|
|
|
return UnsupportedSyncStatus();
|
|
|
|
case 'TimedOutSyncStatus':
|
|
|
|
return TimedOutSyncStatus();
|
|
|
|
case 'LostConnectionSyncStatus':
|
|
|
|
return LostConnectionSyncStatus();
|
|
|
|
default:
|
|
|
|
throw Exception('Unknown sync status type: $type');
|
|
|
|
}
|
|
|
|
}
|