diff --git a/modules/webapp/src/main/elm/Comp/ItemMerge.elm b/modules/webapp/src/main/elm/Comp/ItemMerge.elm index a5ba33e1..6bdc6ea4 100644 --- a/modules/webapp/src/main/elm/Comp/ItemMerge.elm +++ b/modules/webapp/src/main/elm/Comp/ItemMerge.elm @@ -8,6 +8,7 @@ module Comp.ItemMerge exposing ( Model , Msg + , Outcome(..) , init , initQuery , update @@ -97,10 +98,16 @@ type FormState --- Update +type Outcome + = OutcomeCancel + | OutcomeMerged + | OutcomeNotYet + + type alias UpdateResult = { model : Model , cmd : Cmd Msg - , done : Bool + , outcome : Outcome } @@ -108,7 +115,7 @@ notDoneResult : ( Model, Cmd Msg ) -> UpdateResult notDoneResult t = { model = Tuple.first t , cmd = Tuple.second t - , done = False + , outcome = OutcomeNotYet } @@ -134,19 +141,19 @@ update flags msg model = if result.success then { model = { model | formState = FormStateMergeSuccessful } , cmd = Cmd.none - , done = True + , outcome = OutcomeMerged } else { model = { model | formState = FormStateError result.message } , cmd = Cmd.none - , done = False + , outcome = OutcomeNotYet } MergeResp (Err err) -> { model = { model | formState = FormStateHttp err } , cmd = Cmd.none - , done = False + , outcome = OutcomeNotYet } ToggleInfoText -> @@ -190,7 +197,7 @@ update flags msg model = CancelMerge -> { model = model , cmd = Cmd.none - , done = True + , outcome = OutcomeCancel } diff --git a/modules/webapp/src/main/elm/Page/Home/Update.elm b/modules/webapp/src/main/elm/Page/Home/Update.elm index a47db78b..6d1fe5b6 100644 --- a/modules/webapp/src/main/elm/Page/Home/Update.elm +++ b/modules/webapp/src/main/elm/Page/Home/Update.elm @@ -586,16 +586,36 @@ update mId key flags settings msg model = Comp.ItemMerge.update flags lmsg svm.mergeModel nextView = - if result.done then - SelectView { svm | action = NoneAction } + case result.outcome of + Comp.ItemMerge.OutcomeCancel -> + SelectView { svm | action = NoneAction } - else - SelectView { svm | mergeModel = result.model } + Comp.ItemMerge.OutcomeNotYet -> + SelectView { svm | mergeModel = result.model } + + Comp.ItemMerge.OutcomeMerged -> + if settings.searchMenuVisible then + SearchView + + else + SimpleView + + model_ = + { model | viewMode = nextView } in - noSub - ( { model | viewMode = nextView } - , Cmd.map MergeItemsMsg result.cmd - ) + if result.outcome == Comp.ItemMerge.OutcomeMerged then + update mId + key + flags + settings + (DoSearch model.searchTypeDropdownValue) + model_ + + else + noSub + ( model_ + , Cmd.map MergeItemsMsg result.cmd + ) _ -> noSub ( model, Cmd.none )