mirror of
https://github.com/TheAnachronism/docspell.git
synced 2025-09-30 08:38:22 +00:00
127 lines
3.7 KiB
Elm
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 )
|