Files
docspell/modules/webapp/src/main/elm/Page/CollectiveSettings/Update.elm
eikek 9545431d59 Allow the user to set time zone
Fix timezone handling for periodic tasks
2022-03-01 23:15:59 +01:00

127 lines
3.7 KiB
Elm

{-
Copyright 2020 Eike K. & Contributors
SPDX-License-Identifier: AGPL-3.0-or-later
-}
module Page.CollectiveSettings.Update exposing (update)
import Api
import Comp.CollectiveSettingsForm
import Comp.ShareManage
import Comp.SourceManage
import Comp.UserManage
import Data.Environment as Env
import Data.Flags
import Messages.Page.CollectiveSettings exposing (Texts)
import Page.CollectiveSettings.Data exposing (..)
update : Texts -> Env.Update -> Msg -> Model -> ( Model, Cmd Msg, Sub Msg )
update texts env msg model =
case msg of
SetTab t ->
let
m =
{ model | currentTab = Just t }
in
case t of
SourceTab ->
update texts env (SourceMsg Comp.SourceManage.LoadSources) m
UserTab ->
update texts env (UserMsg Comp.UserManage.LoadUsers) m
InsightsTab ->
update texts env Init m
SettingsTab ->
update texts env Init m
ShareTab ->
update texts env (ShareMsg Comp.ShareManage.loadShares) m
SourceMsg m ->
let
( m2, c2 ) =
Comp.SourceManage.update env.flags m model.sourceModel
in
( { model | sourceModel = m2 }, Cmd.map SourceMsg c2, Sub.none )
ShareMsg lm ->
let
( sm, sc, ss ) =
Comp.ShareManage.update texts.shareManage env.flags lm model.shareModel
in
( { model | shareModel = sm }, Cmd.map ShareMsg sc, Sub.map ShareMsg ss )
UserMsg m ->
let
( m2, c2 ) =
Comp.UserManage.update env.flags m model.userModel
in
( { model | userModel = m2 }, Cmd.map UserMsg c2, Sub.none )
SettingsFormMsg m ->
let
( m2, c2, msett ) =
Comp.CollectiveSettingsForm.update env.flags env.settings.timeZone m model.settingsModel
cmd =
case msett of
Nothing ->
Cmd.none
Just sett ->
Api.setCollectiveSettings env.flags sett SubmitResp
in
( { model | settingsModel = m2, formState = InitialState }
, Cmd.batch [ cmd, Cmd.map SettingsFormMsg c2 ]
, Sub.none
)
Init ->
( { model | formState = InitialState }
, Cmd.batch
[ Api.getInsights env.flags GetInsightsResp
, Api.getCollectiveSettings env.flags CollectiveSettingsResp
]
, Sub.none
)
GetInsightsResp (Ok data) ->
( { model | insights = data }, Cmd.none, Sub.none )
GetInsightsResp (Err _) ->
( model, Cmd.none, Sub.none )
CollectiveSettingsResp (Ok data) ->
let
( cm, cc ) =
Comp.CollectiveSettingsForm.init env.flags data
in
( { model | settingsModel = cm }
, Cmd.map SettingsFormMsg cc
, Sub.none
)
CollectiveSettingsResp (Err _) ->
( model, Cmd.none, Sub.none )
SubmitResp (Ok res) ->
( { model
| formState =
if res.success then
SubmitSuccessful
else
SubmitFailed res.message
}
, Cmd.none
, Sub.none
)
SubmitResp (Err err) ->
( { model | formState = SubmitError err }, Cmd.none, Sub.none )