mirror of
https://github.com/jhillyerd/inbucket.git
synced 2025-12-17 17:47:03 +00:00
ui: Respect monitor visible config option
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
module Data.AppConfig exposing (AppConfig, decoder)
|
||||
module Data.AppConfig exposing (AppConfig, decoder, default)
|
||||
|
||||
import Json.Decode as D
|
||||
import Json.Decode.Pipeline as P
|
||||
@@ -13,3 +13,8 @@ decoder : D.Decoder AppConfig
|
||||
decoder =
|
||||
D.succeed AppConfig
|
||||
|> P.required "monitor-visible" D.bool
|
||||
|
||||
|
||||
default : AppConfig
|
||||
default =
|
||||
AppConfig True
|
||||
|
||||
@@ -13,6 +13,7 @@ module Data.Session exposing
|
||||
)
|
||||
|
||||
import Browser.Navigation as Nav
|
||||
import Data.AppConfig as AppConfig exposing (AppConfig)
|
||||
import Html exposing (Html)
|
||||
import Json.Decode as D
|
||||
import Json.Decode.Pipeline exposing (..)
|
||||
@@ -28,6 +29,7 @@ type alias Session =
|
||||
, flash : Maybe Flash
|
||||
, routing : Bool
|
||||
, zone : Time.Zone
|
||||
, config : AppConfig
|
||||
, persistent : Persistent
|
||||
}
|
||||
|
||||
@@ -43,13 +45,14 @@ type alias Persistent =
|
||||
}
|
||||
|
||||
|
||||
init : Nav.Key -> Url -> Persistent -> Session
|
||||
init key location persistent =
|
||||
init : Nav.Key -> Url -> AppConfig -> Persistent -> Session
|
||||
init key location config persistent =
|
||||
{ key = key
|
||||
, host = location.host
|
||||
, flash = Nothing
|
||||
, routing = True
|
||||
, zone = Time.utc
|
||||
, config = config
|
||||
, persistent = persistent
|
||||
}
|
||||
|
||||
@@ -61,6 +64,7 @@ initError key location error =
|
||||
, flash = Just (Flash "Initialization failed" [ ( "Error", error ) ])
|
||||
, routing = True
|
||||
, zone = Time.utc
|
||||
, config = AppConfig.default
|
||||
, persistent = Persistent []
|
||||
}
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@ init configValue location key =
|
||||
session =
|
||||
case D.decodeValue configDecoder configValue of
|
||||
Ok config ->
|
||||
Session.init key location config.session
|
||||
Session.init key location config.appConfig config.session
|
||||
|
||||
Err error ->
|
||||
Session.initError key location (D.errorToString error)
|
||||
@@ -255,8 +255,20 @@ changeRouteTo route model =
|
||||
|> updateWith Mailbox MailboxMsg model
|
||||
|
||||
Route.Monitor ->
|
||||
Monitor.init session
|
||||
|> updateWith Monitor MonitorMsg model
|
||||
if session.config.monitorVisible then
|
||||
Monitor.init session
|
||||
|> updateWith Monitor MonitorMsg model
|
||||
|
||||
else
|
||||
let
|
||||
flash =
|
||||
{ title = "Unknown route requested"
|
||||
, table = [ ( "Error", "Monitor disabled by configuration." ) ]
|
||||
}
|
||||
in
|
||||
( applyToModelSession (Session.showFlash flash) model
|
||||
, Cmd.none
|
||||
)
|
||||
|
||||
Route.Status ->
|
||||
Status.init session
|
||||
|
||||
@@ -44,7 +44,11 @@ frame controls session page modal content =
|
||||
[ ul [ class "navbar", attribute "role" "navigation" ]
|
||||
[ li [ class "navbar-brand" ]
|
||||
[ a [ Route.href Route.Home ] [ text "@ inbucket" ] ]
|
||||
, navbarLink page Route.Monitor [ text "Monitor" ]
|
||||
, if session.config.monitorVisible then
|
||||
navbarLink page Route.Monitor [ text "Monitor" ]
|
||||
|
||||
else
|
||||
text ""
|
||||
, navbarLink page Route.Status [ text "Status" ]
|
||||
, navbarRecent page controls
|
||||
, li [ class "navbar-mailbox" ]
|
||||
|
||||
Reference in New Issue
Block a user