Files
docspell/modules/webapp/src/main/elm/Main.elm
eikek 4ffc8d1f14 Add support for more generic notification
This is a start to have different kinds of notifications. It is
possible to be notified via e-mail, matrix or gotify. It also extends
the current "periodic query" for due items by allowing notification
over different channels. A "generic periodic query" variant is added
as well.
2021-12-11 18:57:32 +01:00

99 lines
1.9 KiB
Elm

{-
Copyright 2020 Eike K. & Contributors
SPDX-License-Identifier: AGPL-3.0-or-later
-}
module Main exposing (init, main)
import Api
import App.Data exposing (..)
import App.Update exposing (..)
import App.View2
import Browser exposing (Document)
import Browser.Navigation exposing (Key)
import Data.Flags exposing (Flags)
import Data.NotificationChannel
import Data.UiSettings
import Html exposing (..)
import Html.Attributes exposing (..)
import Html.Events exposing (..)
import Page exposing (Page(..))
import Ports
import Url exposing (Url)
-- MAIN
main : Program Flags Model Msg
main =
Browser.application
{ init = init
, view = viewDoc
, update = update
, subscriptions = subscriptions
, onUrlRequest = NavRequest
, onUrlChange = NavChange
}
-- MODEL
init : Flags -> Url -> Key -> ( Model, Cmd Msg )
init flags url key =
let
( im, ic ) =
App.Data.init key url flags Data.UiSettings.defaults
( m, cmd, s ) =
App.Update.initPage im im.page
in
( { m | subs = s }
, Cmd.batch
[ cmd
, ic
, Api.versionInfo flags VersionResp
, if Page.isSecured im.page then
Api.loginSession flags SessionCheckResp
else
Cmd.none
, Api.getClientSettings flags GetUiSettings
]
)
viewDoc : Model -> Document Msg
viewDoc model =
let
title =
case model.page of
ItemDetailPage _ ->
model.itemDetailModel.detail.item.name
_ ->
Page.pageName model.page
in
{ title = model.flags.config.appName ++ ": " ++ title
, body =
App.View2.view model
}
-- SUBSCRIPTIONS
subscriptions : Model -> Sub Msg
subscriptions model =
Sub.batch
[ model.subs
, Ports.receiveUiSettings ReceiveBrowserSettings
, Ports.receiveServerEvent ReceiveWsMessage
]