mirror of
https://github.com/TheAnachronism/docspell.git
synced 2025-06-24 11:28:25 +00:00
109 lines
3.0 KiB
Elm
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 )
|