From f65f5eff356da037541e81fed37e303a43cdc4f2 Mon Sep 17 00:00:00 2001 From: Eike Kettner Date: Sun, 13 Sep 2020 13:01:49 +0200 Subject: [PATCH] Set client base-url from browser when not given This is necessary when generating absolute URLs in the webapp (as done in "Sources" page). --- modules/webapp/src/main/elm/App/Data.elm | 29 +++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/modules/webapp/src/main/elm/App/Data.elm b/modules/webapp/src/main/elm/App/Data.elm index ba9fe730..28fbd8d4 100644 --- a/modules/webapp/src/main/elm/App/Data.elm +++ b/modules/webapp/src/main/elm/App/Data.elm @@ -49,8 +49,11 @@ type alias Model = init : Key -> Url -> Flags -> UiSettings -> ( Model, Cmd Msg ) -init key url flags settings = +init key url flags_ settings = let + flags = + initBaseUrl url flags_ + page = Page.fromUrl url |> Maybe.withDefault (defaultPage flags) @@ -90,6 +93,30 @@ init key url flags settings = ) +initBaseUrl : Url -> Flags -> Flags +initBaseUrl url flags_ = + let + cfg = + flags_.config + + baseUrl = + if cfg.baseUrl == "" then + Url.toString + { url + | path = "" + , query = Nothing + , fragment = Nothing + } + + else + cfg.baseUrl + + cfgNew = + { cfg | baseUrl = baseUrl } + in + { flags_ | config = cfgNew } + + type Msg = NavRequest UrlRequest | NavChange Url