diff options
Diffstat (limited to 'frontend/src/Main.elm')
-rw-r--r-- | frontend/src/Main.elm | 39 |
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 | |||
4 | import Browser.Navigation as Nav | 4 | import Browser.Navigation as Nav |
5 | import Cart | 5 | import Cart |
6 | import Catalog | 6 | import Catalog |
7 | import Checkout | ||
7 | import Html exposing (..) | 8 | import Html exposing (..) |
8 | import Html.Attributes exposing (..) | 9 | import Html.Attributes exposing (..) |
9 | import Html.Events exposing (..) | 10 | import 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)) |