watch<T> method

SaveObservableBase<T> watch<T>(
  1. SaveProvider<T> provider
)
inherited

Watch the observables.

Implementation

SaveObservableBase<T> watch<T>(
  SaveProvider<T> provider,
) {
  final key = provider.key;
  final isFirstTime = !_providers.containsKey(key);
  _providers[key] ??= provider;
  final obs = isFirstTime ? repo.watch(provider) : repo.get(provider);

  _subscriptions[key] ??= obs.listen((_) => onNotification(provider));

  if (obs case SaveReactiveObservable obs) {
    SaveObserver? parent = this;

    while (parent is SaveReactiveObservable && parent == obs) {
      parent = parent.currentParent;
    }

    obs.currentParent = parent;

    obs.addParent(parent!);
  }

  if (!obs.initialized) {
    obs.initialize();
  }

  return obs;
}