about summary refs log tree commit diff
path: root/client/src/User.elm
diff options
context:
space:
mode:
authorWilliam Carroll <wpcarro@gmail.com>2020-08-02T10·16+0100
committerWilliam Carroll <wpcarro@gmail.com>2020-08-02T10·16+0100
commit699892883ceaffb64e0d9b9aaab67313a60a5428 (patch)
treec3dd3e40d3a18de274f3b0a4654137ebc3102b75 /client/src/User.elm
parentd5bc6f963d4c8cdb8990a9946d9a142a32e13d3c (diff)
Support deleting trips from the client
TL;DR:
- Ensure Types.TripPK in Types.hs uses Calendar.Day for startDate
- Prefer verbiage "GotCreateTrip" to "CreatedTrip"
- Extend Utils.deleteWithCredentials to accept a body parameter
- Support a delete button in the UI
Diffstat (limited to 'client/src/User.elm')
-rw-r--r--client/src/User.elm84
1 files changed, 46 insertions, 38 deletions
diff --git a/client/src/User.elm b/client/src/User.elm
index 5216eeada03e..48aca865231d 100644
--- a/client/src/User.elm
+++ b/client/src/User.elm
@@ -71,7 +71,30 @@ createTrip model =
         ]
 
 
-trips : State.Model -> Html msg
+renderTrip : State.Trip -> Html State.Msg
+renderTrip trip =
+    li
+        [ [ "py-2" ]
+            |> Tailwind.use
+            |> class
+        ]
+        [ p []
+            [ text
+                (Date.toIsoString trip.startDate
+                    ++ " - "
+                    ++ Date.toIsoString trip.endDate
+                    ++ " -> "
+                    ++ trip.destination
+                )
+            ]
+        , UI.textButton
+            { label = "Delete"
+            , handleClick = State.AttemptDeleteTrip trip.destination trip.startDate
+            }
+        ]
+
+
+trips : State.Model -> Html State.Msg
 trips model =
     div []
         [ UI.header 3 "Upcoming Trips"
@@ -86,45 +109,30 @@ trips model =
                 UI.paragraph ("Error: " ++ Utils.explainHttpError e)
 
             RemoteData.Success xs ->
-                ul []
-                    (xs
-                        |> List.map
-                            (\trip ->
-                                li
-                                    [ [ "py-2" ]
-                                        |> Tailwind.use
-                                        |> class
-                                    ]
-                                    [ text
-                                        (Date.toIsoString trip.startDate
-                                            ++ " - "
-                                            ++ Date.toIsoString trip.endDate
-                                            ++ " -> "
-                                            ++ trip.destination
-                                        )
-                                    ]
-                            )
-                    )
+                ul [] (xs |> List.map renderTrip)
         ]
 
 
 render : State.Model -> Html State.Msg
 render model =
-    div
-        [ class
-            ([ "container"
-             , "mx-auto"
-             , "text-center"
-             ]
-                |> Tailwind.use
-            )
-        ]
-        [ UI.header 2 ("Welcome, " ++ model.username ++ "!")
-        , createTrip model
-        , trips model
-        , UI.textButton
-            { label = "Logout"
-            , handleClick = State.AttemptLogout
-            }
-        , Common.allErrors model
-        ]
+    Common.withSession model
+        (\session ->
+            div
+                [ class
+                    ([ "container"
+                     , "mx-auto"
+                     , "text-center"
+                     ]
+                        |> Tailwind.use
+                    )
+                ]
+                [ UI.header 2 ("Welcome, " ++ session.username ++ "!")
+                , createTrip model
+                , trips model
+                , UI.textButton
+                    { label = "Logout"
+                    , handleClick = State.AttemptLogout
+                    }
+                , Common.allErrors model
+                ]
+        )