mirror of
https://github.com/jhillyerd/inbucket.git
synced 2025-12-18 01:57:02 +00:00
All pages now leverage Effects for most of their Session and Cmd requests. More work required for routing and other lingering Cmd use.
60 lines
1.2 KiB
Elm
60 lines
1.2 KiB
Elm
module Page.Home exposing (Model, Msg, init, update, view)
|
|
|
|
import Data.Session exposing (Session)
|
|
import Effect exposing (Effect)
|
|
import Html exposing (Html)
|
|
import Html.Attributes exposing (class, property)
|
|
import HttpUtil
|
|
import Json.Encode as Encode
|
|
|
|
|
|
|
|
-- MODEL --
|
|
|
|
|
|
type alias Model =
|
|
{ session : Session
|
|
, greeting : String
|
|
}
|
|
|
|
|
|
init : Session -> ( Model, Effect Msg )
|
|
init session =
|
|
( Model session "", Effect.getGreeting GreetingLoaded )
|
|
|
|
|
|
|
|
-- UPDATE --
|
|
|
|
|
|
type Msg
|
|
= GreetingLoaded (Result HttpUtil.Error String)
|
|
|
|
|
|
update : Msg -> Model -> ( Model, Effect Msg )
|
|
update msg model =
|
|
case msg of
|
|
GreetingLoaded (Ok greeting) ->
|
|
( { model | greeting = greeting }, Effect.none )
|
|
|
|
GreetingLoaded (Err err) ->
|
|
( model, Effect.showFlash (HttpUtil.errorFlash err) )
|
|
|
|
|
|
|
|
-- VIEW --
|
|
|
|
|
|
view : Model -> { title : String, modal : Maybe (Html msg), content : List (Html Msg) }
|
|
view model =
|
|
{ title = "Inbucket"
|
|
, modal = Nothing
|
|
, content =
|
|
[ Html.node "rendered-html"
|
|
[ class "greeting"
|
|
, property "content" (Encode.string model.greeting)
|
|
]
|
|
[]
|
|
]
|
|
}
|