@@ -5,16 +5,19 @@ import Browser.Navigation as Nav
55import Circle
66import Clock.Model exposing (ClockState (..) )
77import Html exposing (..)
8- import Html.Attributes exposing (class , id )
8+ import Html.Attributes exposing (class , classList , id )
99import Html.Events exposing (onClick )
1010import Js.Commands
1111import Js.Events
12+ import Js.EventsMapping as EventsMapping exposing (EventsMapping )
1213import Json.Decode
1314import Json.Encode
15+ import Lib.BatchMsg
1416import Lib.Duration as Duration exposing (Duration )
1517import Lib.Icons as Icons
1618import Lib.Ratio
1719import Lib.Toaster exposing (Toasts )
20+ import Mob.Tabs.Home
1821import Mobbers.Settings
1922import Random
2023import Shared
@@ -59,22 +62,36 @@ type AlarmState
5962 | Standby
6063
6164
65+ type Tab
66+ = Main
67+ | Mobbers
68+ | Clock
69+ | Sound
70+ | Share
71+
72+
6273type alias Model =
63- { shared : Shared . State
74+ { key : Nav . Key
75+ , url : Url . Url
76+ , shared : Shared . State
6477 , mobbersSettings : Mobbers . Settings . Model
6578 , alarm : AlarmState
6679 , now : Time . Posix
6780 , toasts : Toasts
81+ , tab : Tab
6882 }
6983
7084
7185init : () -> Url .Url -> Nav .Key -> ( Model , Cmd Msg )
72- init _ _ _ =
73- ( { shared = Shared . init
86+ init _ url key =
87+ ( { key = key
88+ , url = url
89+ , shared = Shared . init
7490 , mobbersSettings = Mobbers . Settings . init
7591 , alarm = Standby
7692 , now = Time . millisToPosix 0
7793 , toasts = []
94+ , tab = Main
7895 }
7996 , Task . perform TimePassed Time . now
8097 )
@@ -96,8 +113,11 @@ type Msg
96113 | StopSound
97114 | AlarmEnded
98115 | UnknownEvent
116+ | GotMainTabMsg Mob . Tabs . Home . Msg
99117 | GotMobbersSettingsMsg Mobbers . Settings . Msg
100118 | GotToastMsg Lib . Toaster . Msg
119+ | SwitchTab Tab
120+ | Batch ( List Msg )
101121
102122
103123update : Msg -> Model -> ( Model , Cmd Msg )
@@ -176,6 +196,9 @@ update msg model =
176196 UnknownEvent ->
177197 ( model, Cmd . none )
178198
199+ GotMainTabMsg subMsg ->
200+ ( model, Mob . Tabs . Home . update subMsg |> Cmd . map GotMainTabMsg )
201+
179202 GotMobbersSettingsMsg subMsg ->
180203 let
181204 mobbersResult =
@@ -199,6 +222,12 @@ update msg model =
199222 ( \ toasts -> { model | toasts = toasts } )
200223 ( Cmd . map GotToastMsg )
201224
225+ SwitchTab tab ->
226+ ( { model | tab = tab }, Cmd . none )
227+
228+ Batch messages ->
229+ Lib . BatchMsg . update messages model update
230+
202231
203232
204233-- SUBSCRIPTIONS
@@ -221,7 +250,10 @@ toMsg event =
221250 AlarmEnded
222251
223252 _ ->
224- UnknownEvent
253+ Lib . Toaster . eventsMapping
254+ |> EventsMapping . map GotToastMsg
255+ |> EventsMapping . dispatch event
256+ |> Batch
225257
226258
227259
@@ -273,14 +305,29 @@ view model =
273305 ]
274306 ]
275307 , nav []
276- [ button [] [ Icons . home ]
277- , button [] [ Icons . clock ]
278- , button [] [ Icons . people ]
279- , button [] [ Icons . sound ]
280- , button [] [ Icons . share ]
308+ [ button [ onClick <| SwitchTab Main , classList [ ( " active " , model . tab == Main ) ] ] [ Icons . home ]
309+ , button [ onClick <| SwitchTab Clock , classList [ ( " active " , model . tab == Clock ) ] ] [ Icons . clock ]
310+ , button [ onClick <| SwitchTab Mobbers , classList [ ( " active " , model . tab == Mobbers ) ] ] [ Icons . people ]
311+ , button [ onClick <| SwitchTab Sound , classList [ ( " active " , model . tab == Sound ) ] ] [ Icons . sound ]
312+ , button [ onClick <| SwitchTab Share , classList [ ( " active " , model . tab == Share ) ] ] [ Icons . share ]
281313 ]
282- , Mobbers . Settings . view model. shared. mobbers model. mobbersSettings
283- |> Html . map GotMobbersSettingsMsg
314+ , case model. tab of
315+ Main ->
316+ Mob . Tabs . Home . view " Awesome" model. url model. shared. mobbers
317+ |> Html . map GotMainTabMsg
318+
319+ Clock ->
320+ div [] []
321+
322+ Mobbers ->
323+ Mobbers . Settings . view model. shared. mobbers model. mobbersSettings
324+ |> Html . map GotMobbersSettingsMsg
325+
326+ Sound ->
327+ div [] []
328+
329+ Share ->
330+ div [] []
284331 , Lib . Toaster . view model. toasts |> Html . map GotToastMsg
285332 ]
286333 ]
0 commit comments