whenInactive function

ActivationSetup whenInactive(
  1. AnyFeature feature
)

Inverse of whenActive — the owning feature is active while feature is not FeatureStatus.active (i.e. .disabled or .pending). Useful for fallback / "offline" UI features that live only while their main counterpart is off.

final loginPromptFeature = createFeature(
  name: 'LoginPrompt',
  optionalDependsOn: [sessionFeature],
)..activation(whenInactive(sessionFeature));

Implementation

ActivationSetup whenInactive(AnyFeature feature) {
  return (parentApi, toggle, cleanup) {
    final statusStore = parentApi.statusOf(feature);
    cleanup.subscribe(statusStore, (_, status) {
      unawaited(
        toggle(
          status != FeatureStatus.active
              ? ToggleState.active
              : ToggleState.inactive,
        ),
      );
    }, fireImmediately: true);
  };
}