mirror of
				https://github.com/TheAnachronism/docspell.git
				synced 2025-10-31 17:50:11 +00:00 
			
		
		
		
	Only scroll to the last visited item when initializing the page
When searching again on that page, scrolling/highlighting should not happen. It now happens whenever coming to this page (not only when going back from detail view). Fixes: #373
This commit is contained in:
		| @@ -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 | ||||
|   | ||||
| @@ -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 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user