CakeWallet/lib/view_model/settings/sync_mode.dart
cyan 686580ff78
Implement background sync for xmr using flutter_daemon (#2094)
* Implement background sync for xmr using flutter_daemon

* - initialize app config in background thread
- initializeAppConfigs without loading the wallet.

* - properly do awaited calls in methodChannel
- prevent locking main thread during background sync

* add back background sync debug page
fix issues caused by xmr wallet being view only (and read only)

* changes from review
improve starting of bgsync task

* update stopBackgroundSync, await listener functions, ensure that listener always start (call _start in constructor)

* DO-NOT-MERGE: extre verbose monero logs

* stop background service when app is being opened

* improve monitoring of background sync

* update flutter_daemon to ensure network constraint
prevent throwing errors on isBackgroundSyncEnabled
check network before syncing

* Update lib/main.dart

* revert Update main.dart [skip ci]

* continously run network check

* disable charging requirement,
fix status reporting of background sync in UI

* Refactor background sync logic, and add UI notifications for battery optimization. Updated flutter_daemon version modified build.gradle for signing config to allow testing in both release and debug modes.

* verbose monero only when requested in code.
Do not start background sync when battery optimization is on

* fix background sync mode not properly reflecting state changes

* drop unnecessary dependency

---------

Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
2025-03-21 19:22:00 +02:00

17 lines
638 B
Dart

enum SyncType { aggresive, hourly, daily }
class SyncMode {
SyncMode(this.name, this.type, this.frequency);
final String name;
final SyncType type;
final Duration frequency;
static final all = [
// **Technically** we could call aggressive option "15 minutes" but OS may "not feel like it",
// so instead we will call it aggressive so user knows that it will be as frequent as possible.
SyncMode("Aggressive", SyncType.aggresive, Duration(minutes: 15)),
SyncMode("Hourly", SyncType.hourly, Duration(hours: 1)),
SyncMode("Daily", SyncType.daily, Duration(hours: 18)), // yes this is straight up lie.
];
}