1
0
mirror of https://github.com/jhillyerd/inbucket.git synced 2025-12-17 17:47:03 +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.Decode.Pipeline exposing (..)
import Json.Encode as E import Json.Encode as E
import Ports import Ports
import Time
import Url exposing (Url) import Url exposing (Url)
@@ -22,6 +23,7 @@ type alias Session =
, host : String , host : String
, flash : String , flash : String
, routing : Bool , routing : Bool
, zone : Time.Zone
, persistent : Persistent , persistent : Persistent
} }
@@ -42,7 +44,13 @@ type Msg
init : Nav.Key -> Url -> Persistent -> Session init : Nav.Key -> Url -> Persistent -> Session
init key location persistent = 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 ) update : Msg -> Session -> ( Session, Cmd a )

View File

@@ -11,6 +11,8 @@ import Page.Monitor as Monitor
import Page.Status as Status import Page.Status as Status
import Ports import Ports
import Route exposing (Route) import Route exposing (Route)
import Task
import Time
import Url exposing (Url) import Url exposing (Url)
import Views.Page as Page exposing (ActivePage(..), frame) import Views.Page as Page exposing (ActivePage(..), frame)
@@ -42,7 +44,7 @@ init sessionValue location key =
( subModel, _, _ ) = ( subModel, _, _ ) =
Home.init Home.init
model = initModel =
{ page = Home subModel { page = Home subModel
, session = session , session = session
, mailboxName = "" , mailboxName = ""
@@ -50,8 +52,11 @@ init sessionValue location key =
route = route =
Route.fromUrl location Route.fromUrl location
( model, cmd ) =
changeRouteTo route initModel |> updateSession
in in
changeRouteTo route model |> updateSession ( model, Cmd.batch [ cmd, Task.perform TimeZoneLoaded Time.here ] )
type Msg type Msg
@@ -59,6 +64,7 @@ type Msg
| UrlChanged Url | UrlChanged Url
| LinkClicked UrlRequest | LinkClicked UrlRequest
| UpdateSession (Result D.Error Session.Persistent) | UpdateSession (Result D.Error Session.Persistent)
| TimeZoneLoaded Time.Zone
| OnMailboxNameInput String | OnMailboxNameInput String
| ViewMailbox String | ViewMailbox String
| HomeMsg Home.Msg | HomeMsg Home.Msg
@@ -145,6 +151,16 @@ update msg model =
, Session.SetFlash ("Error decoding session: " ++ D.errorToString error) , 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 -> OnMailboxNameInput name ->
( { model | mailboxName = name }, Cmd.none, Session.none ) ( { model | mailboxName = name }, Cmd.none, Session.none )

View File

@@ -483,10 +483,10 @@ view session model =
) )
ShowingList _ (ShowingMessage { message }) -> ShowingList _ (ShowingMessage { message }) ->
viewMessage message model.bodyMode viewMessage session.zone message model.bodyMode
ShowingList _ (Transitioning { message }) -> ShowingList _ (Transitioning { message }) ->
viewMessage message model.bodyMode viewMessage session.zone message model.bodyMode
_ -> _ ->
text "" text ""
@@ -538,8 +538,8 @@ messageChip model selected message =
] ]
viewMessage : Message -> Body -> Html Msg viewMessage : Time.Zone -> Message -> Body -> Html Msg
viewMessage message bodyMode = viewMessage zone message bodyMode =
let let
sourceUrl = sourceUrl =
"/serve/m/" ++ message.mailbox ++ "/" ++ message.id ++ "/source" "/serve/m/" ++ message.mailbox ++ "/" ++ message.id ++ "/source"
@@ -557,7 +557,7 @@ viewMessage message bodyMode =
, dt [] [ text "To:" ] , dt [] [ text "To:" ]
, dd [] (List.map text message.to) , dd [] (List.map text message.to)
, dt [] [ text "Date:" ] , dt [] [ text "Date:" ]
, dd [] [ verboseDate message.date ] , dd [] [ verboseDate zone message.date ]
, dt [] [ text "Subject:" ] , dt [] [ text "Subject:" ]
, dd [] [ text message.subject ] , dd [] [ text message.subject ]
] ]
@@ -636,8 +636,8 @@ relativeDate model date =
Relative.relativeTime model.now date |> text Relative.relativeTime model.now date |> text
verboseDate : Posix -> Html Msg verboseDate : Time.Zone -> Posix -> Html Msg
verboseDate date = verboseDate zone date =
text <| text <|
DF.format DF.format
[ DF.monthNameFull [ DF.monthNameFull
@@ -653,8 +653,9 @@ verboseDate date =
, DF.secondFixed , DF.secondFixed
, DF.text " " , DF.text " "
, DF.amPmUppercase , DF.amPmUppercase
, DF.text " (Local)"
] ]
Time.utc zone
date date

View File

@@ -107,24 +107,24 @@ view session model =
, th [] [ text "Mailbox" ] , th [] [ text "Mailbox" ]
, th [] [ text "Subject" ] , th [] [ text "Subject" ]
] ]
, tbody [] (List.map viewMessage model.messages) , tbody [] (List.map (viewMessage session.zone) model.messages)
] ]
] ]
} }
viewMessage : MessageHeader -> Html Msg viewMessage : Time.Zone -> MessageHeader -> Html Msg
viewMessage message = viewMessage zone message =
tr [ Events.onClick (OpenMessage message) ] tr [ Events.onClick (OpenMessage message) ]
[ td [] [ shortDate message.date ] [ td [] [ shortDate zone message.date ]
, td [ class "desktop" ] [ text message.from ] , td [ class "desktop" ] [ text message.from ]
, td [] [ text message.mailbox ] , td [] [ text message.mailbox ]
, td [] [ text message.subject ] , td [] [ text message.subject ]
] ]
shortDate : Posix -> Html Msg shortDate : Time.Zone -> Posix -> Html Msg
shortDate date = shortDate zone date =
DF.format DF.format
[ DF.dayOfMonthFixed [ DF.dayOfMonthFixed
, DF.text "-" , DF.text "-"
@@ -136,6 +136,6 @@ shortDate date =
, DF.text " " , DF.text " "
, DF.amPmUppercase , DF.amPmUppercase
] ]
Time.utc zone
date date
|> text |> text