runEffect method

  1. @override
void runEffect(
  1. SaveEffectType type,
  2. List<SaveEffect> effects,
  3. T value
)
override

Runs the SaveEffects.

Implementation

@override
void runEffect(
  SaveEffectType type,
  List<SaveEffect> effects,
  T value,
) {
  _provider.runEffect(type, effects, value);
  final rxEffects = effects.whereType<SaveFromFamilyEffect<T, A>>();
  final callbacks = switch (type) {
    SaveEffectType.init => rxEffects
        .where((e) => e.onInit != null || e.orElse != null)
        .map((e) => e.onInit ?? e.orElse)
        .nonNulls,
    SaveEffectType.update => rxEffects
        .where((e) => e.onUpdate != null || e.orElse != null)
        .map((e) => e.onUpdate ?? e.orElse)
        .nonNulls,
    SaveEffectType.dispose => rxEffects
        .where((e) => e.onDispose != null || e.orElse != null)
        .map((e) => e.onDispose ?? e.orElse)
        .nonNulls,
    _ => throw 'Unsupported event',
  };
  for (final callback in callbacks) {
    Future(() {
      callback(value, arg);
    });
  }
}