ofModelAction<Model> static method

Cmd<Model> ofModelAction<Model>(
  1. FutureOr<void> action(
    1. Model model
    ), {
  2. Update<Model> onSuccessUpdate(
    1. Model model
    )?,
  3. Model onSuccessModel(
    1. Model model
    )?,
  4. Cmd<Model>? onSuccessCommands,
  5. Update<Model> onErrorUpdate(
    1. Model model,
    2. Exception e
    )?,
  6. Model onErrorModel(
    1. Model model,
    2. Exception e
    )?,
  7. Cmd<Model> onErrorCommands(
    1. Exception e
    )?,
  8. bool doRebuild = true,
})

Do some action receiving the current model. Optionally dispatch a message if the action was successful and dispatch a message on case of Exception

Implementation

static Cmd<Model> ofModelAction<Model>(
  FutureOr<void> action(Model model), {
  Update<Model> onSuccessUpdate(Model model)?,
  Model onSuccessModel(Model model)?,
  Cmd<Model>? onSuccessCommands,
  Update<Model> onErrorUpdate(Model model, Exception e)?,
  Model onErrorModel(Model model, Exception e)?,
  Cmd<Model> onErrorCommands(Exception e)?,
  bool doRebuild = true,
}) =>
    Cmd.ofSub((dispatch) => dispatch((model) => Update(model,
        commands: Cmd.ofAction(() => action(model),
            onErrorUpdate: onErrorUpdate,
            onErrorCommands: onErrorCommands,
            onSuccessUpdate: onSuccessUpdate,
            onErrorModel: onErrorModel,
            onSuccessModel: onSuccessModel,
            onSuccessCommands: onSuccessCommands,
            doRebuild: doRebuild))));