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:
@@ -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 )
|
||||||
|
|||||||
@@ -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 )
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user