mirror of
https://github.com/jhillyerd/inbucket.git
synced 2025-12-17 09:37:02 +00:00
ui: Show dates in browser local timezone
This commit is contained in:
@@ -14,6 +14,7 @@ import Json.Decode as D
|
||||
import Json.Decode.Pipeline exposing (..)
|
||||
import Json.Encode as E
|
||||
import Ports
|
||||
import Time
|
||||
import Url exposing (Url)
|
||||
|
||||
|
||||
@@ -22,6 +23,7 @@ type alias Session =
|
||||
, host : String
|
||||
, flash : String
|
||||
, routing : Bool
|
||||
, zone : Time.Zone
|
||||
, persistent : Persistent
|
||||
}
|
||||
|
||||
@@ -42,7 +44,13 @@ type Msg
|
||||
|
||||
init : Nav.Key -> Url -> Persistent -> Session
|
||||
init key location persistent =
|
||||
Session key location.host "" True persistent
|
||||
{ key = key
|
||||
, host = location.host
|
||||
, flash = ""
|
||||
, routing = True
|
||||
, zone = Time.utc
|
||||
, persistent = persistent
|
||||
}
|
||||
|
||||
|
||||
update : Msg -> Session -> ( Session, Cmd a )
|
||||
|
||||
@@ -11,6 +11,8 @@ import Page.Monitor as Monitor
|
||||
import Page.Status as Status
|
||||
import Ports
|
||||
import Route exposing (Route)
|
||||
import Task
|
||||
import Time
|
||||
import Url exposing (Url)
|
||||
import Views.Page as Page exposing (ActivePage(..), frame)
|
||||
|
||||
@@ -42,7 +44,7 @@ init sessionValue location key =
|
||||
( subModel, _, _ ) =
|
||||
Home.init
|
||||
|
||||
model =
|
||||
initModel =
|
||||
{ page = Home subModel
|
||||
, session = session
|
||||
, mailboxName = ""
|
||||
@@ -50,8 +52,11 @@ init sessionValue location key =
|
||||
|
||||
route =
|
||||
Route.fromUrl location
|
||||
|
||||
( model, cmd ) =
|
||||
changeRouteTo route initModel |> updateSession
|
||||
in
|
||||
changeRouteTo route model |> updateSession
|
||||
( model, Cmd.batch [ cmd, Task.perform TimeZoneLoaded Time.here ] )
|
||||
|
||||
|
||||
type Msg
|
||||
@@ -59,6 +64,7 @@ type Msg
|
||||
| UrlChanged Url
|
||||
| LinkClicked UrlRequest
|
||||
| UpdateSession (Result D.Error Session.Persistent)
|
||||
| TimeZoneLoaded Time.Zone
|
||||
| OnMailboxNameInput String
|
||||
| ViewMailbox String
|
||||
| HomeMsg Home.Msg
|
||||
@@ -145,6 +151,16 @@ update msg model =
|
||||
, Session.SetFlash ("Error decoding session: " ++ D.errorToString error)
|
||||
)
|
||||
|
||||
TimeZoneLoaded zone ->
|
||||
let
|
||||
session =
|
||||
model.session
|
||||
in
|
||||
( { model | session = { session | zone = zone } }
|
||||
, Cmd.none
|
||||
, Session.none
|
||||
)
|
||||
|
||||
OnMailboxNameInput name ->
|
||||
( { model | mailboxName = name }, Cmd.none, Session.none )
|
||||
|
||||
|
||||
@@ -483,10 +483,10 @@ view session model =
|
||||
)
|
||||
|
||||
ShowingList _ (ShowingMessage { message }) ->
|
||||
viewMessage message model.bodyMode
|
||||
viewMessage session.zone message model.bodyMode
|
||||
|
||||
ShowingList _ (Transitioning { message }) ->
|
||||
viewMessage message model.bodyMode
|
||||
viewMessage session.zone message model.bodyMode
|
||||
|
||||
_ ->
|
||||
text ""
|
||||
@@ -538,8 +538,8 @@ messageChip model selected message =
|
||||
]
|
||||
|
||||
|
||||
viewMessage : Message -> Body -> Html Msg
|
||||
viewMessage message bodyMode =
|
||||
viewMessage : Time.Zone -> Message -> Body -> Html Msg
|
||||
viewMessage zone message bodyMode =
|
||||
let
|
||||
sourceUrl =
|
||||
"/serve/m/" ++ message.mailbox ++ "/" ++ message.id ++ "/source"
|
||||
@@ -557,7 +557,7 @@ viewMessage message bodyMode =
|
||||
, dt [] [ text "To:" ]
|
||||
, dd [] (List.map text message.to)
|
||||
, dt [] [ text "Date:" ]
|
||||
, dd [] [ verboseDate message.date ]
|
||||
, dd [] [ verboseDate zone message.date ]
|
||||
, dt [] [ text "Subject:" ]
|
||||
, dd [] [ text message.subject ]
|
||||
]
|
||||
@@ -636,8 +636,8 @@ relativeDate model date =
|
||||
Relative.relativeTime model.now date |> text
|
||||
|
||||
|
||||
verboseDate : Posix -> Html Msg
|
||||
verboseDate date =
|
||||
verboseDate : Time.Zone -> Posix -> Html Msg
|
||||
verboseDate zone date =
|
||||
text <|
|
||||
DF.format
|
||||
[ DF.monthNameFull
|
||||
@@ -653,8 +653,9 @@ verboseDate date =
|
||||
, DF.secondFixed
|
||||
, DF.text " "
|
||||
, DF.amPmUppercase
|
||||
, DF.text " (Local)"
|
||||
]
|
||||
Time.utc
|
||||
zone
|
||||
date
|
||||
|
||||
|
||||
|
||||
@@ -107,24 +107,24 @@ view session model =
|
||||
, th [] [ text "Mailbox" ]
|
||||
, th [] [ text "Subject" ]
|
||||
]
|
||||
, tbody [] (List.map viewMessage model.messages)
|
||||
, tbody [] (List.map (viewMessage session.zone) model.messages)
|
||||
]
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
viewMessage : MessageHeader -> Html Msg
|
||||
viewMessage message =
|
||||
viewMessage : Time.Zone -> MessageHeader -> Html Msg
|
||||
viewMessage zone message =
|
||||
tr [ Events.onClick (OpenMessage message) ]
|
||||
[ td [] [ shortDate message.date ]
|
||||
[ td [] [ shortDate zone message.date ]
|
||||
, td [ class "desktop" ] [ text message.from ]
|
||||
, td [] [ text message.mailbox ]
|
||||
, td [] [ text message.subject ]
|
||||
]
|
||||
|
||||
|
||||
shortDate : Posix -> Html Msg
|
||||
shortDate date =
|
||||
shortDate : Time.Zone -> Posix -> Html Msg
|
||||
shortDate zone date =
|
||||
DF.format
|
||||
[ DF.dayOfMonthFixed
|
||||
, DF.text "-"
|
||||
@@ -136,6 +136,6 @@ shortDate date =
|
||||
, DF.text " "
|
||||
, DF.amPmUppercase
|
||||
]
|
||||
Time.utc
|
||||
zone
|
||||
date
|
||||
|> text
|
||||
|
||||
Reference in New Issue
Block a user