diff --git a/modules/webapp/src/main/elm/Page/Home/Data.elm b/modules/webapp/src/main/elm/Page/Home/Data.elm index cb671eb5..0c995564 100644 --- a/modules/webapp/src/main/elm/Page/Home/Data.elm +++ b/modules/webapp/src/main/elm/Page/Home/Data.elm @@ -89,7 +89,7 @@ type Msg | SearchMenuMsg Comp.SearchMenu.Msg | ResetSearch | ItemCardListMsg Comp.ItemCardList.Msg - | ItemSearchResp (Result Http.Error ItemLightList) + | ItemSearchResp Bool (Result Http.Error ItemLightList) | ItemSearchAddResp (Result Http.Error ItemLightList) | DoSearch | ToggleSearchMenu @@ -136,21 +136,21 @@ itemNav id model = } -doSearchCmd : Flags -> UiSettings -> Int -> Model -> Cmd Msg -doSearchCmd flags settings offset model = +doSearchCmd : Flags -> UiSettings -> Int -> Bool -> Model -> Cmd Msg +doSearchCmd flags settings offset scroll model = case model.searchType of BasicSearch -> - doSearchDefaultCmd flags settings offset model + doSearchDefaultCmd flags settings offset scroll model ContentSearch -> - doSearchDefaultCmd flags settings offset model + doSearchDefaultCmd flags settings offset scroll model ContentOnlySearch -> - doSearchIndexCmd flags settings offset model + doSearchIndexCmd flags settings offset scroll model -doSearchDefaultCmd : Flags -> UiSettings -> Int -> Model -> Cmd Msg -doSearchDefaultCmd flags settings offset model = +doSearchDefaultCmd : Flags -> UiSettings -> Int -> Bool -> Model -> Cmd Msg +doSearchDefaultCmd flags settings offset scroll model = let smask = Comp.SearchMenu.getItemSearch model.searchMenuModel @@ -162,14 +162,14 @@ doSearchDefaultCmd flags settings offset model = } in if offset == 0 then - Api.itemSearch flags mask ItemSearchResp + Api.itemSearch flags mask (ItemSearchResp scroll) else Api.itemSearch flags mask ItemSearchAddResp -doSearchIndexCmd : Flags -> UiSettings -> Int -> Model -> Cmd Msg -doSearchIndexCmd flags settings offset model = +doSearchIndexCmd : Flags -> UiSettings -> Int -> Bool -> Model -> Cmd Msg +doSearchIndexCmd flags settings offset scroll model = case model.contentOnlySearch of Just q -> let @@ -180,7 +180,7 @@ doSearchIndexCmd flags settings offset model = } in if offset == 0 then - Api.itemIndexSearch flags mask ItemSearchResp + Api.itemIndexSearch flags mask (ItemSearchResp scroll) else Api.itemIndexSearch flags mask ItemSearchAddResp @@ -195,7 +195,7 @@ doSearchIndexCmd flags settings offset model = mask = { emptyMask | limit = settings.itemSearchPageSize } in - Api.itemSearch flags mask ItemSearchResp + Api.itemSearch flags mask (ItemSearchResp scroll) resultsBelowLimit : UiSettings -> Model -> Bool diff --git a/modules/webapp/src/main/elm/Page/Home/Update.elm b/modules/webapp/src/main/elm/Page/Home/Update.elm index edb3d70b..9e01cb06 100644 --- a/modules/webapp/src/main/elm/Page/Home/Update.elm +++ b/modules/webapp/src/main/elm/Page/Home/Update.elm @@ -26,7 +26,7 @@ update mId key flags settings msg model = Init -> Util.Update.andThen2 [ update mId key flags settings (SearchMenuMsg Comp.SearchMenu.Init) - , doSearch flags settings + , doSearch flags settings True ] model @@ -61,7 +61,7 @@ update mId key flags settings msg model = ( m2, c2, s2 ) = if nextState.stateChange && not model.searchInProgress then - doSearch flags settings newModel + doSearch flags settings False newModel else withSub ( newModel, Cmd.none ) @@ -91,7 +91,7 @@ update mId key flags settings msg model = , Cmd.batch [ Cmd.map ItemCardListMsg result.cmd ] ) - ItemSearchResp (Ok list) -> + ItemSearchResp scroll (Ok list) -> let noff = settings.itemSearchPageSize @@ -105,7 +105,11 @@ update mId key flags settings msg model = in Util.Update.andThen2 [ update mId key flags settings (ItemCardListMsg (Comp.ItemCardList.SetResults list)) - , scrollToCard mId + , if scroll then + scrollToCard mId + + else + \next -> ( next, Cmd.none, Sub.none ) ] m @@ -124,7 +128,6 @@ update mId key flags settings msg model = in Util.Update.andThen2 [ update mId key flags settings (ItemCardListMsg (Comp.ItemCardList.AddResults list)) - , scrollToCard mId ] m @@ -136,7 +139,7 @@ update mId key flags settings msg model = , Cmd.none ) - ItemSearchResp (Err _) -> + ItemSearchResp _ (Err _) -> withSub ( { model | searchInProgress = False @@ -153,7 +156,7 @@ update mId key flags settings msg model = withSub ( model, Cmd.none ) else - doSearch flags settings nm + doSearch flags settings False nm ToggleSearchMenu -> withSub @@ -272,8 +275,8 @@ scrollToCard mId model = ( model, Cmd.none, Sub.none ) -doSearch : Flags -> UiSettings -> Model -> ( Model, Cmd Msg, Sub Msg ) -doSearch flags settings model = +doSearch : Flags -> UiSettings -> Bool -> Model -> ( Model, Cmd Msg, Sub Msg ) +doSearch flags settings scroll model = let stype = if @@ -289,7 +292,7 @@ doSearch flags settings model = { model | searchType = stype } searchCmd = - doSearchCmd flags settings 0 model_ + doSearchCmd flags settings 0 scroll model_ ( newThrottle, cmd ) = Throttle.try searchCmd model.throttle @@ -308,7 +311,7 @@ doSearchMore : Flags -> UiSettings -> Model -> ( Model, Cmd Msg ) doSearchMore flags settings model = let cmd = - doSearchCmd flags settings model.searchOffset model + doSearchCmd flags settings model.searchOffset False model in ( { model | moreInProgress = True } , cmd