Files
docspell/modules/webapp/src/main/elm/Page/CollectiveSettings/Update.elm
2021-07-04 10:57:53 +02:00

109 lines
3.0 KiB
Elm

{-
Copyright 2020 Docspell Contributors
SPDX-License-Identifier: GPL-3.0-or-later
-}
module Page.CollectiveSettings.Update exposing (update)
import Api
import Comp.CollectiveSettingsForm
import Comp.SourceManage
import Comp.UserManage
import Data.Flags exposing (Flags)
import Page.CollectiveSettings.Data exposing (..)
update : Flags -> Msg -> Model -> ( Model, Cmd Msg )
update flags msg model =
case msg of
SetTab t ->
let
m =
{ model | currentTab = Just t }
in
case t of
SourceTab ->
update flags (SourceMsg Comp.SourceManage.LoadSources) m
UserTab ->
update flags (UserMsg Comp.UserManage.LoadUsers) m
InsightsTab ->
update flags Init m
SettingsTab ->
update flags Init m
SourceMsg m ->
let
( m2, c2 ) =
Comp.SourceManage.update flags m model.sourceModel
in
( { model | sourceModel = m2 }, Cmd.map SourceMsg c2 )
UserMsg m ->
let
( m2, c2 ) =
Comp.UserManage.update flags m model.userModel
in
( { model | userModel = m2 }, Cmd.map UserMsg c2 )
SettingsFormMsg m ->
let
( m2, c2, msett ) =
Comp.CollectiveSettingsForm.update flags m model.settingsModel
cmd =
case msett of
Nothing ->
Cmd.none
Just sett ->
Api.setCollectiveSettings flags sett SubmitResp
in
( { model | settingsModel = m2, formState = InitialState }
, Cmd.batch [ cmd, Cmd.map SettingsFormMsg c2 ]
)
Init ->
( { model | formState = InitialState }
, Cmd.batch
[ Api.getInsights flags GetInsightsResp
, Api.getCollectiveSettings flags CollectiveSettingsResp
]
)
GetInsightsResp (Ok data) ->
( { model | insights = data }, Cmd.none )
GetInsightsResp (Err _) ->
( model, Cmd.none )
CollectiveSettingsResp (Ok data) ->
let
( cm, cc ) =
Comp.CollectiveSettingsForm.init flags data
in
( { model | settingsModel = cm }
, Cmd.map SettingsFormMsg cc
)
CollectiveSettingsResp (Err _) ->
( model, Cmd.none )
SubmitResp (Ok res) ->
( { model
| formState =
if res.success then
SubmitSuccessful
else
SubmitFailed res.message
}
, Cmd.none
)
SubmitResp (Err err) ->
( { model | formState = SubmitError err }, Cmd.none )