1
0
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:
James Hillyerd
2018-11-23 16:47:22 -08:00
parent ba8e2de475
commit 6215ce77dd
4 changed files with 43 additions and 18 deletions

View File

@@ -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 )

View File

@@ -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 )

View File

@@ -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

View File

@@ -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