cake_wallet/lib/src/domain/common/sync_status.dart

81 lines
1.6 KiB
Dart
Raw Normal View History

2020-01-04 19:31:52 +00:00
import 'package:cake_wallet/generated/i18n.dart';
abstract class SyncStatus {
const SyncStatus();
double progress();
String title();
}
class SyncingSyncStatus extends SyncStatus {
2020-01-08 12:26:34 +00:00
SyncingSyncStatus(this.height, this.blockchainHeight, this.refreshHeight);
2020-01-04 19:31:52 +00:00
final int height;
final int blockchainHeight;
final int refreshHeight;
2020-01-08 12:26:34 +00:00
@override
2020-01-04 19:31:52 +00:00
double progress() {
final line = blockchainHeight - refreshHeight;
final diff = line - (blockchainHeight - height);
return diff <= 0 ? 0.0 : diff / line;
}
2020-01-08 12:26:34 +00:00
@override
2020-01-04 19:31:52 +00:00
String title() => S.current.sync_status_syncronizing;
@override
String toString() => '${blockchainHeight - height}';
}
class SyncedSyncStatus extends SyncStatus {
2020-01-08 12:26:34 +00:00
@override
2020-01-04 19:31:52 +00:00
double progress() => 1.0;
2020-01-08 12:26:34 +00:00
@override
2020-01-04 19:31:52 +00:00
String title() => S.current.sync_status_syncronized;
}
class NotConnectedSyncStatus extends SyncStatus {
const NotConnectedSyncStatus();
2020-01-08 12:26:34 +00:00
@override
2020-01-04 19:31:52 +00:00
double progress() => 0.0;
2020-01-08 12:26:34 +00:00
@override
2020-01-04 19:31:52 +00:00
String title() => S.current.sync_status_not_connected;
}
class StartingSyncStatus extends SyncStatus {
2020-01-08 12:26:34 +00:00
@override
2020-01-04 19:31:52 +00:00
double progress() => 0.0;
2020-01-08 12:26:34 +00:00
@override
2020-01-04 19:31:52 +00:00
String title() => S.current.sync_status_starting_sync;
}
class FailedSyncStatus extends SyncStatus {
2020-01-08 12:26:34 +00:00
@override
2020-01-04 19:31:52 +00:00
double progress() => 1.0;
2020-01-08 12:26:34 +00:00
@override
2020-01-04 19:31:52 +00:00
String title() => S.current.sync_status_failed_connect;
}
class ConnectingSyncStatus extends SyncStatus {
2020-01-08 12:26:34 +00:00
@override
2020-01-04 19:31:52 +00:00
double progress() => 0.0;
2020-01-08 12:26:34 +00:00
@override
2020-01-04 19:31:52 +00:00
String title() => S.current.sync_status_connecting;
}
class ConnectedSyncStatus extends SyncStatus {
2020-01-08 12:26:34 +00:00
@override
2020-01-04 19:31:52 +00:00
double progress() => 0.0;
2020-01-08 12:26:34 +00:00
@override
2020-01-04 19:31:52 +00:00
String title() => S.current.sync_status_connected;
2020-01-08 12:26:34 +00:00
}