watch<T> method
Watch the observables.
Implementation
SaveObservableBase<T> watch<T>(
SaveProvider<T> provider,
) {
final key = provider.key;
final obs = repo.getObservable<T>(key) ?? _createObservable<T>(provider);
if (needObservation && !_acquired(key)) {
_subscriptions[key] ??= obs.listen((value) {
onNotification(provider);
});
_providers[key] = provider;
obs.acquire();
}
// TODO: Make this more reasonable and readable
if (obs case SaveReactiveObservable obs) {
SaveObserver? parent = this;
while (parent is SaveReactiveObservable && parent == obs) {
parent = parent.currentParent;
}
obs.currentParent = parent;
}
return obs;
}