pullback<GlobalState, GlobalAction, GlobalEnvironment> method

Reducer<GlobalState, GlobalAction, GlobalEnvironment> pullback<GlobalState, GlobalAction, GlobalEnvironment>({
  1. required Lens<GlobalState, State> stateLens,
  2. required ActionLens<GlobalAction, Action> actionLens,
  3. Environment toLocalEnvironment(
    1. GlobalEnvironment globalEnv
    )?,
})

Lifts this local reducer to operate within a larger global domain.

Uses stateLens to read/write local state from/to global state, and actionLens to extract/embed local actions from/to global actions. Actions that don't match the lens are ignored (no state change, no effects).

final globalReducer = localReducer.pullback(
  stateLens: (get: (g) => g.local, set: (g, l) => g.copyWith(local: l)),
  actionLens: (extract: (g) => g.local, embed: (l) => GlobalAction.local(l)),
);

Implementation

Reducer<GlobalState, GlobalAction, GlobalEnvironment> pullback<GlobalState, GlobalAction, GlobalEnvironment>({
  required Lens<GlobalState, State> stateLens,
  required ActionLens<GlobalAction, Action> actionLens,
  Environment Function(GlobalEnvironment globalEnv)? toLocalEnvironment,
}) {
  return _pullback(
    toLocalState: stateLens.get,
    toGlobalState: stateLens.set,
    toLocalAction: actionLens.extract,
    toGlobalAction: actionLens.embed,
    toLocalEnvironment: toLocalEnvironment ?? ((p0) => p0 as Environment),
  );
}