run method

  1. @override
Future<void> run()
override

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;
  }
}