diff --git a/modules/webapp/src/main/elm/App/Data.elm b/modules/webapp/src/main/elm/App/Data.elm index c461fadc..28fbd8d4 100644 --- a/modules/webapp/src/main/elm/App/Data.elm +++ b/modules/webapp/src/main/elm/App/Data.elm @@ -160,7 +160,7 @@ checkPage flags page = defaultPage : Flags -> Page defaultPage flags = if isSignedIn flags then - HomePage Nothing + HomePage else LoginPage Nothing diff --git a/modules/webapp/src/main/elm/App/Update.elm b/modules/webapp/src/main/elm/App/Update.elm index dfdf5316..e261463b 100644 --- a/modules/webapp/src/main/elm/App/Update.elm +++ b/modules/webapp/src/main/elm/App/Update.elm @@ -31,6 +31,7 @@ import Page.UserSettings.Data import Page.UserSettings.Update import Ports import Url +import Util.Maybe import Util.Update @@ -312,8 +313,8 @@ updateHome lmsg model = let mid = case model.page of - HomePage x -> - x + HomePage -> + Util.Maybe.fromString model.itemDetailModel.detail.item.id _ -> Nothing @@ -348,7 +349,7 @@ initPage model_ page = { model_ | page = page } in case page of - HomePage _ -> + HomePage -> Util.Update.andThen2 [ updateHome Page.Home.Data.Init , updateQueue Page.Queue.Data.StopRefresh diff --git a/modules/webapp/src/main/elm/App/View.elm b/modules/webapp/src/main/elm/App/View.elm index afd850d7..2223a342 100644 --- a/modules/webapp/src/main/elm/App/View.elm +++ b/modules/webapp/src/main/elm/App/View.elm @@ -16,6 +16,7 @@ import Page.Queue.View import Page.Register.View import Page.Upload.View import Page.UserSettings.View +import Util.Maybe view : Model -> Html Msg @@ -65,7 +66,7 @@ defaultLayout model = [ div [ class "ui fluid container" ] [ a [ class "header item narrow-item" - , Page.href (HomePage Nothing) + , Page.href HomePage ] [ img [ class "image" @@ -84,7 +85,7 @@ defaultLayout model = , id "main-content" ] [ case model.page of - HomePage _ -> + HomePage -> viewHome model LoginPage _ -> @@ -180,8 +181,8 @@ viewHome model = let mid = case model.page of - HomePage x -> - x + HomePage -> + Util.Maybe.fromString model.itemDetailModel.detail.item.id _ -> Nothing @@ -218,7 +219,7 @@ loginInfo model = ] ] [ menuEntry model - (HomePage Nothing) + HomePage [ img [ class "image icon" , src (model.flags.config.docspellAssetPath ++ "/img/logo-mc-96.png") diff --git a/modules/webapp/src/main/elm/Comp/ItemDetail/Update.elm b/modules/webapp/src/main/elm/Comp/ItemDetail/Update.elm index f6a8f5a9..5fddccca 100644 --- a/modules/webapp/src/main/elm/Comp/ItemDetail/Update.elm +++ b/modules/webapp/src/main/elm/Comp/ItemDetail/Update.elm @@ -632,7 +632,7 @@ update key flags inav settings msg model = noSub ( model, Page.set key (ItemDetailPage id) ) Nothing -> - noSub ( model, Page.set key (HomePage Nothing) ) + noSub ( model, Page.set key HomePage ) else noSub ( model, Cmd.none ) diff --git a/modules/webapp/src/main/elm/Comp/ItemDetail/View.elm b/modules/webapp/src/main/elm/Comp/ItemDetail/View.elm index 131c1c8f..ba2b76b9 100644 --- a/modules/webapp/src/main/elm/Comp/ItemDetail/View.elm +++ b/modules/webapp/src/main/elm/Comp/ItemDetail/View.elm @@ -110,7 +110,7 @@ renderDetailMenu settings inav model = ) ] ] - [ a [ class "item", Page.href (HomePage (Just model.item.id)) ] + [ a [ class "item", Page.href HomePage ] [ i [ class "arrow left icon" ] [] ] , a diff --git a/modules/webapp/src/main/elm/Page.elm b/modules/webapp/src/main/elm/Page.elm index 7308e1a2..286d35bf 100644 --- a/modules/webapp/src/main/elm/Page.elm +++ b/modules/webapp/src/main/elm/Page.elm @@ -24,7 +24,7 @@ import Util.Maybe type Page - = HomePage (Maybe String) + = HomePage | LoginPage (Maybe Page) | ManageDataPage | CollectiveSettingPage @@ -39,7 +39,7 @@ type Page isSecured : Page -> Bool isSecured page = case page of - HomePage _ -> + HomePage -> True LoginPage _ -> @@ -88,7 +88,7 @@ loginPage p = pageName : Page -> String pageName page = case page of - HomePage _ -> + HomePage -> "Home" LoginPage _ -> @@ -147,10 +147,7 @@ uploadId page = pageToString : Page -> String pageToString page = case page of - HomePage (Just id) -> - "/app/home?item=" ++ id - - HomePage Nothing -> + HomePage -> "/app/home" LoginPage referer -> @@ -232,8 +229,8 @@ parser = oneOf [ Parser.map HomePage (oneOf - [ Parser.top itemQuery - , s pathPrefix s "home" itemQuery + [ Parser.top + , s pathPrefix s "home" ] ) , Parser.map LoginPage (s pathPrefix s "login" pageQuery) @@ -271,8 +268,3 @@ pageQuery = in Query.string "r" |> Query.map parsePage - - -itemQuery : Query.Parser (Maybe String) -itemQuery = - Query.string "item" diff --git a/modules/webapp/src/main/elm/Page/Home/Data.elm b/modules/webapp/src/main/elm/Page/Home/Data.elm index eda1efbf..cb671eb5 100644 --- a/modules/webapp/src/main/elm/Page/Home/Data.elm +++ b/modules/webapp/src/main/elm/Page/Home/Data.elm @@ -41,6 +41,7 @@ type alias Model = , searchTypeForm : SearchType , contentOnlySearch : Maybe String , dragDropData : DD.DragDropData + , scrollToCard : Maybe String } @@ -70,6 +71,7 @@ init flags = , contentOnlySearch = Nothing , dragDropData = DD.DragDropData DD.init Nothing + , scrollToCard = Nothing } @@ -98,7 +100,7 @@ type Msg | KeyUpMsg (Maybe KeyCode) | SetContentOnly String | ScrollResult (Result Dom.Error ()) - | ClearItemDetailId (Maybe String) + | ClearItemDetailId type SearchType diff --git a/modules/webapp/src/main/elm/Page/Home/Update.elm b/modules/webapp/src/main/elm/Page/Home/Update.elm index 2382929a..edb3d70b 100644 --- a/modules/webapp/src/main/elm/Page/Home/Update.elm +++ b/modules/webapp/src/main/elm/Page/Home/Update.elm @@ -243,18 +243,12 @@ update mId key flags settings msg model = ScrollResult _ -> let cmd = - Process.sleep 800 |> Task.perform (always (ClearItemDetailId mId)) + Process.sleep 800 |> Task.perform (always ClearItemDetailId) in withSub ( model, cmd ) - ClearItemDetailId id -> - -- if user clicks quickly away (e.g. on another item), the - -- deferred command should be ignored - if mId == id then - noSub ( model, Page.set key (HomePage Nothing) ) - - else - noSub ( model, Cmd.none ) + ClearItemDetailId -> + noSub ( { model | scrollToCard = Nothing }, Cmd.none ) @@ -269,7 +263,10 @@ scrollToCard mId model = in case mId of Just id -> - ( model, Task.attempt ScrollResult (scroll id), Sub.none ) + ( { model | scrollToCard = mId } + , Task.attempt ScrollResult (scroll id) + , Sub.none + ) Nothing -> ( model, Cmd.none, Sub.none ) diff --git a/modules/webapp/src/main/elm/Page/Home/View.elm b/modules/webapp/src/main/elm/Page/Home/View.elm index 69f0b2d4..32653c43 100644 --- a/modules/webapp/src/main/elm/Page/Home/View.elm +++ b/modules/webapp/src/main/elm/Page/Home/View.elm @@ -82,7 +82,7 @@ view current flags settings model = ] [ viewSearchBar flags model , Html.map ItemCardListMsg - (Comp.ItemCardList.view current settings model.itemListModel) + (Comp.ItemCardList.view model.scrollToCard settings model.itemListModel) ] , div [ classList diff --git a/modules/webapp/src/main/elm/Page/Login/Update.elm b/modules/webapp/src/main/elm/Page/Login/Update.elm index 54145cd8..539d2f02 100644 --- a/modules/webapp/src/main/elm/Page/Login/Update.elm +++ b/modules/webapp/src/main/elm/Page/Login/Update.elm @@ -25,7 +25,7 @@ update referrer flags msg model = AuthResp (Ok lr) -> let gotoRef = - Maybe.withDefault (HomePage Nothing) referrer |> Page.goto + Maybe.withDefault HomePage referrer |> Page.goto in if lr.success then ( { model | result = Just lr, password = "" }, Cmd.batch [ setAccount lr, gotoRef ], Just lr ) diff --git a/modules/webapp/src/main/elm/Page/Upload/View.elm b/modules/webapp/src/main/elm/Page/Upload/View.elm index f45873da..a297fb28 100644 --- a/modules/webapp/src/main/elm/Page/Upload/View.elm +++ b/modules/webapp/src/main/elm/Page/Upload/View.elm @@ -77,7 +77,7 @@ renderSuccessMsg public _ = else p [] [ text "Your files have been successfully uploaded. They are now being processed. Check the " - , a [ class "ui link", Page.href (HomePage Nothing) ] + , a [ class "ui link", Page.href HomePage ] [ text "Items page" ] , text " later where the files will arrive eventually. Or go to the "