Fix some errors in smoothies app.

This commit is contained in:
Dillon Kearns 2022-08-25 10:59:02 -07:00
parent c7d8c07939
commit fa1686cd4c
8 changed files with 26 additions and 19 deletions

View File

@ -91,7 +91,7 @@ data routeParams =
action : RouteParams -> Request.Parser (DataSource (Response ActionData ErrorPage))
action routeParams =
Request.formData [ postForm ]
Request.formData (postForm |> Form.initCombined identity)
|> Request.map
(\parsedForm ->
let

View File

@ -89,7 +89,7 @@ data routeParams =
action : RouteParams -> Request.Parser (DataSource (Response ActionData ErrorPage))
action routeParams =
Request.formData [ dependentParser ]
Request.formData (dependentParser |> Form.initCombined identity)
|> Request.map
(\parsedForm ->
let

View File

@ -124,10 +124,10 @@ type Action
| SetQuantity Uuid Int
signoutForm : Form.HtmlForm String Action input Msg
signoutForm : Form.HtmlForm String () input Msg
signoutForm =
Form.init
{ combine = Validation.succeed Signout
{ combine = Validation.succeed ()
, view =
\formState ->
[ Html.button [] [ Html.text "Sign out" ]
@ -136,12 +136,12 @@ signoutForm =
|> Form.hiddenKind ( "kind", "signout" ) "Expected signout"
setQuantityForm : Form.HtmlForm String Action ( Int, QuantityChange, Smoothie ) Msg
setQuantityForm : Form.HtmlForm String ( Uuid, Int ) ( Int, QuantityChange, Smoothie ) Msg
setQuantityForm =
Form.init
(\uuid quantity ->
{ combine =
Validation.succeed SetQuantity
Validation.succeed Tuple.pair
|> Validation.andMap (uuid |> Validation.map Uuid)
|> Validation.andMap quantity
, view =
@ -186,11 +186,11 @@ toQuantity quantityChange =
-1
oneOfParsers : List (Form.HtmlForm String Action ( Int, QuantityChange, Smoothie ) Msg)
oneOfParsers : Form.ServerForms String Action
oneOfParsers =
[ signoutForm
, setQuantityForm
]
signoutForm
|> Form.initCombined (\() -> Signout)
|> Form.combine (\( uuid, int ) -> SetQuantity uuid int) setQuantityForm
action : RouteParams -> Request.Parser (DataSource (Response ActionData ErrorPage))
@ -232,6 +232,7 @@ view maybeUrl sharedModel model app =
pendingItems : Dict String Int
pendingItems =
app.fetchers
|> Dict.values
|> List.filterMap
(\pending ->
case Form.runOneOfServerSide pending.payload.fields oneOfParsers of

View File

@ -181,7 +181,7 @@ data routeParams =
action : RouteParams -> Request.Parser (DataSource (Response ActionData ErrorPage))
action routeParams =
MySession.withSession
(Request.formDataWithServerValidation [ form ])
(Request.formDataWithServerValidation (form |> Form.initCombined identity))
(\usernameDs session ->
usernameDs
|> DataSource.andThen

View File

@ -98,7 +98,7 @@ data routeParams =
action : RouteParams -> Request.Parser (DataSource (Response ActionData ErrorPage))
action routeParams =
Request.formData [ form ]
Request.formData (form |> Form.initCombined identity)
|> MySession.expectSessionDataOrRedirect (Session.get "userId" >> Maybe.map Uuid)
(\userId parsed session ->
case parsed of

View File

@ -90,7 +90,7 @@ data routeParams =
action : RouteParams -> Request.Parser (DataSource (Response ActionData ErrorPage))
action routeParams =
Request.formData [ dependentParser ]
Request.formData (dependentParser |> Form.initCombined identity)
|> Request.map
(\parsedForm ->
let

View File

@ -211,7 +211,7 @@ validateUsername rawUsername =
action : RouteParams -> Request.Parser (DataSource (Response ActionData ErrorPage))
action routeParams =
Request.formDataWithServerValidation [ formParser ]
Request.formDataWithServerValidation (formParser |> Form.initCombined identity)
|> MySession.expectSessionDataOrRedirect (Session.get "userId" >> Maybe.map Uuid)
(\userId parsedActionData session ->
parsedActionData

View File

@ -123,9 +123,16 @@ data routeParams =
)
formParsers : Form.ServerForms String Action
formParsers =
deleteForm
|> Form.initCombined (\() -> Delete)
|> Form.combine Edit form
action : RouteParams -> Request.Parser (DataSource (Response ActionData ErrorPage))
action routeParams =
Request.formData [ form, deleteForm ]
Request.formData formParsers
|> MySession.expectSessionDataOrRedirect (Session.get "userId" >> Maybe.map Uuid)
(\userId parsed session ->
case parsed of
@ -174,10 +181,10 @@ type alias EditInfo =
{ name : String, description : String, price : Int, imageUrl : String }
deleteForm : Form.HtmlForm String Action data Msg
deleteForm : Form.HtmlForm String () data Msg
deleteForm =
Form.init
{ combine = Validation.succeed Delete
{ combine = Validation.succeed ()
, view =
\formState ->
[ Html.button
@ -196,7 +203,7 @@ deleteForm =
|> Form.hiddenKind ( "kind", "delete" ) "Required"
form : Form.HtmlForm String Action Data Msg
form : Form.HtmlForm String EditInfo Data Msg
form =
Form.init
(\name description price imageUrl ->
@ -206,7 +213,6 @@ form =
|> Validation.andMap description
|> Validation.andMap price
|> Validation.andMap imageUrl
|> Validation.map Edit
, view =
\formState ->
let