aboutsummaryrefslogtreecommitdiff
path: root/frontend/src/Main.elm
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/src/Main.elm')
-rw-r--r--frontend/src/Main.elm39
1 files changed, 35 insertions, 4 deletions
diff --git a/frontend/src/Main.elm b/frontend/src/Main.elm
index bf1583c..f1883a1 100644
--- a/frontend/src/Main.elm
+++ b/frontend/src/Main.elm
@@ -4,6 +4,7 @@ import Browser
4import Browser.Navigation as Nav 4import Browser.Navigation as Nav
5import Cart 5import Cart
6import Catalog 6import Catalog
7import Checkout
7import Html exposing (..) 8import Html exposing (..)
8import Html.Attributes exposing (..) 9import Html.Attributes exposing (..)
9import Html.Events exposing (..) 10import Html.Events exposing (..)
@@ -43,6 +44,7 @@ type Route
43 | CatalogPage 44 | CatalogPage
44 | CartPage 45 | CartPage
45 | ProductPage Int 46 | ProductPage Int
47 | CheckoutPage
46 | NotFoundPage 48 | NotFoundPage
47 49
48 50
@@ -54,9 +56,8 @@ parseRoute =
54 , P.map CatalogPage (P.s "catalog") 56 , P.map CatalogPage (P.s "catalog")
55 , P.map CartPage (P.s "cart") 57 , P.map CartPage (P.s "cart")
56 , P.map SignupPage (P.s "signup") 58 , P.map SignupPage (P.s "signup")
59 , P.map CheckoutPage (P.s "checkout")
57 , P.map ProductPage (P.s "product" </> P.int) 60 , P.map ProductPage (P.s "product" </> P.int)
58
59 --, P.map ProductPage (P.s "product" </> int)
60 ] 61 ]
61 62
62 63
@@ -69,6 +70,7 @@ type alias Model =
69 , productModel : Product.Model 70 , productModel : Product.Model
70 , signupModel : Signup.Model 71 , signupModel : Signup.Model
71 , cartModel : Cart.Model 72 , cartModel : Cart.Model
73 , checkoutModel : Checkout.Model
72 } 74 }
73 75
74 76
@@ -92,8 +94,11 @@ init flags url key =
92 94
93 cart = 95 cart =
94 Cart.init 96 Cart.init
97
98 checkout =
99 Checkout.init
95 in 100 in
96 ( Model key url start login catalog product signup cart, Cmd.none ) 101 ( Model key url start login catalog product signup cart checkout, Cmd.none )
97 102
98 103
99 104
@@ -108,6 +113,7 @@ type Msg
108 | ProductMessage Product.Msg 113 | ProductMessage Product.Msg
109 | SignupMessage Signup.Msg 114 | SignupMessage Signup.Msg
110 | CartMessage Cart.Msg 115 | CartMessage Cart.Msg
116 | CheckoutMessage Checkout.Msg
111 | LogoutPressed 117 | LogoutPressed
112 | LogoutSuccess (Result Http.Error ()) 118 | LogoutSuccess (Result Http.Error ())
113 119
@@ -127,7 +133,7 @@ update msg model =
127 ( model, tryLogout ) 133 ( model, tryLogout )
128 134
129 LogoutSuccess _ -> 135 LogoutSuccess _ ->
130 ( model, Nav.replaceUrl model.key "/login" ) 136 ( { model | loginModel = Login.init }, Nav.replaceUrl model.key "/login" )
131 137
132 UrlChanged url -> 138 UrlChanged url ->
133 let 139 let
@@ -155,6 +161,16 @@ update msg model =
155 in 161 in
156 ( { model | location = CartPage }, cmd ) 162 ( { model | location = CartPage }, cmd )
157 163
164 Just CheckoutPage ->
165 let
166 _ =
167 Debug.log "err" "loading checkout page ..."
168
169 cmd =
170 Cmd.map CheckoutMessage Checkout.fetchAmount
171 in
172 ( { model | location = CheckoutPage }, cmd )
173
158 Just p -> 174 Just p ->
159 ( { model | location = p }, Cmd.none ) 175 ( { model | location = p }, Cmd.none )
160 176
@@ -205,6 +221,16 @@ update msg model =
205 in 221 in
206 ( { model | cartModel = cmn }, Cmd.map CartMessage cmd ) 222 ( { model | cartModel = cmn }, Cmd.map CartMessage cmd )
207 223
224 CheckoutMessage cm ->
225 let
226 ( cmn, cmd ) =
227 Checkout.update cm model.checkoutModel
228
229 _ =
230 Debug.log "err" "received checkout message ..."
231 in
232 ( { model | checkoutModel = cmn }, Cmd.map CheckoutMessage cmd )
233
208 ProductMessage pm -> 234 ProductMessage pm ->
209 let 235 let
210 ( pmn, cmd ) = 236 ( pmn, cmd ) =
@@ -292,6 +318,11 @@ view model =
292 , body = pageWrap model (Html.map CartMessage (Cart.view model.cartModel)) 318 , body = pageWrap model (Html.map CartMessage (Cart.view model.cartModel))
293 } 319 }
294 320
321 CheckoutPage ->
322 { title = "Checkout"
323 , body = pageWrap model (Html.map CheckoutMessage (Checkout.view model.checkoutModel))
324 }
325
295 ProductPage item -> 326 ProductPage item ->
296 { title = "Product " ++ String.fromInt item 327 { title = "Product " ++ String.fromInt item
297 , body = pageWrap model (Html.map ProductMessage (Product.view model.productModel)) 328 , body = pageWrap model (Html.map ProductMessage (Product.view model.productModel))