mail based rss feed aggregator
2
fork

Configure Feed

Select the types of activity you want to include in your feed.

finish renaming login_form to email_form; explicitly handle existing unreachable cases in update

ollie 22a01b70 cc86eeca

+26 -16
+26 -16
src/eater/ui/main_ui.gleam
··· 51 51 } 52 52 53 53 fn init(data: ModelData) -> #(Model, Effect(Message)) { 54 - #(EmailForm(data, login_form()), effect.none()) 54 + #(EmailForm(data, email_form()), effect.none()) 55 55 } 56 56 57 57 // model ------------------------------------------------------------------------ ··· 91 91 smtp_environment:, 92 92 allow_signups:, 93 93 toasts: [], 94 + // for some amount of per-session traceability 94 95 logger: woof.new("UI-" <> uuid.v7_string() |> string.slice(28, 6)), 95 96 ) 96 97 } ··· 198 199 fn update(model: Model, message: Message) -> #(Model, Effect(Message)) { 199 200 // log all messages while debugging 200 201 case woof.is_enabled(woof.Debug) { 201 - True -> log_update(model, message) 202 + True -> log_update(model:, message:, at: woof.Debug, with: "New message") 202 203 False -> Nil 203 204 } 204 205 205 206 case message, model { 206 207 // login - enter email ------------------------------------------------------ 207 208 UserSubmittedEmail(Ok(login)), EmailForm(form:, ..) -> 208 - user_submitted_ok_login_form(login, model, form) 209 + user_submitted_ok_email_form(login, model, form) 209 210 UserSubmittedEmail(Error(form)), _ -> #( 210 211 EmailForm(model.data, form), 211 212 effect.none(), 212 213 ) 214 + // should never happen 215 + UserSubmittedEmail(_), _ -> #(model, effect.none()) 213 216 214 217 // login - send email ------------------------------------------------------- 215 218 ServerSentPassword(Ok(_)), EmailSending(data: _, login:, password:) -> { ··· 243 246 244 247 let #(model, effect) = do_toast(toast, model) 245 248 246 - #(EmailForm(model.data, login_form_with_data(login)), effect) 249 + #(EmailForm(model.data, email_form_with_data(login)), effect) 247 250 } 251 + // should never happen 252 + ServerSentPassword(_), _ -> #(model, effect.none()) 248 253 249 254 // login - password --------------------------------------------------------- 250 255 UserSubmittedPassword(Error(form)), PasswordForm(..) as model -> #( ··· 267 272 ) 268 273 } 269 274 } 275 + // should never happen 276 + UserSubmittedPassword(_), _ -> #(model, effect.none()) 270 277 271 278 // login - logged in -------------------------------------------------------- 272 279 UserLoggedIn(Ok(user)), _ -> #(LoggedIn(model.data, user), effect.none()) ··· 279 286 <> " if the problem persists.", 280 287 options: toast.default_options(toast.Danger), 281 288 ) 282 - do_toast(toast, EmailForm(data: model.data, form: login_form())) 289 + do_toast(toast, EmailForm(data: model.data, form: email_form())) 283 290 } 284 291 285 292 // user ui ------------------------------------------------------------------ ··· 295 302 296 303 #(model, effect.none()) 297 304 } 298 - 299 - _, _ -> panic as "what" 300 305 } 301 306 } 302 307 303 308 /// log a given model+message combo to `model.data.logger` 304 309 /// 305 - fn log_update(model: Model, message: Message) -> Nil { 310 + fn log_update( 311 + model model: Model, 312 + message message: Message, 313 + at level: woof.Level, 314 + with text: String, 315 + ) -> Nil { 306 316 let description = 307 317 list.append(describe_model(model), describe_message(message)) 308 318 309 319 model.data.logger 310 - |> woof.log(woof.Debug, "New message", description) 320 + |> woof.log(level, text, description) 311 321 } 312 322 313 323 fn log_in(login: Login, data: ModelData) { ··· 330 340 |> dispatch 331 341 } 332 342 333 - fn user_submitted_ok_login_form( 343 + fn user_submitted_ok_email_form( 334 344 login: Login, 335 345 model: Model, 336 346 form: Form(Login), ··· 407 417 fn view(model: Model) -> Element(Message) { 408 418 html.main([], [ 409 419 case model { 410 - EmailForm(form:, ..) -> view_login_form(form:, busy: False) 420 + EmailForm(form:, ..) -> view_email_form(form:, busy: False) 411 421 EmailSending(login:, ..) -> 412 - view_login_form(login_form_with_data(login), busy: True) 422 + view_email_form(email_form_with_data(login), busy: True) 413 423 PasswordForm(form:, ..) -> 414 424 view_confirm_one_time_password(form:, busy: False) 415 425 LoggingIn(data: _, password:) -> ··· 436 446 ]) 437 447 } 438 448 439 - fn view_login_form(form form: Form(Login), busy busy: Bool) -> Element(Message) { 449 + fn view_email_form(form form: Form(Login), busy busy: Bool) -> Element(Message) { 440 450 let submitted = fn(fields) { 441 451 form 442 452 |> form.add_values(fields) ··· 518 528 Login(email: String) 519 529 } 520 530 521 - fn login_form_with_data(login: Login) -> Form(Login) { 522 - login_form() 531 + fn email_form_with_data(login: Login) -> Form(Login) { 532 + email_form() 523 533 |> form.add_string("email", login.email) 524 534 } 525 535 526 - fn login_form() -> Form(Login) { 536 + fn email_form() -> Form(Login) { 527 537 form.new({ 528 538 use email <- form.field("email", { form.parse_email }) 529 539