run method
Run initial sync for all handlers.
Implementation
@override
Future<void> run() async {
if (_isRunning) {
throw SyncAlreadyRunningException('Initial sync already running');
}
_isRunning = true;
_isCancelled = false;
_setStatus(InitialSyncStatus.running);
try {
final featuresToSync = _handlers.keys.toList();
for (final featureKey in featuresToSync) {
if (_isCancelled) {
_setStatus(InitialSyncStatus.cancelled);
throw OperationCancelledException('Initial sync cancelled');
}
await _performSync(featureKey);
}
_setStatus(InitialSyncStatus.completed);
} catch (e) {
if (_status != InitialSyncStatus.cancelled) {
_setStatus(InitialSyncStatus.failed);
}
rethrow;
} finally {
_isRunning = false;
}
}