mail based rss feed aggregator
2
fork

Configure Feed

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

move user/admin data to `UserData` / `AdminData` also actually log in as admin if the user is an admin

ollie a1d1fd78 b2c7b4cb

+40 -16
+40 -16
src/eater/ui/main_ui.gleam
··· 120 120 LoginForm(context: Context, form: form.Form(FormUser)) 121 121 122 122 // logged in 123 - User(context: Context, self: user.User, subscriptions: List(rss.Location)) 124 - Admin( 125 - context: Context, 123 + User(context: Context, data: UserData) 124 + Admin(context: Context, data: AdminData) 125 + } 126 + 127 + type UserData { 128 + UserData(self: user.User, subscriptions: List(rss.Location)) 129 + } 130 + 131 + type AdminData { 132 + AdminData( 126 133 self: user.User, 127 134 subscriptions: List(rss.Location), 128 135 users: List(user.User), ··· 152 159 woof.field("model", "LoginForm"), 153 160 woof.field("form-email", form.field_value(form, "email")), 154 161 ] 155 - User(context: _, self:, subscriptions:) -> [ 162 + User(context: _, data: UserData(self:, subscriptions:)) -> [ 156 163 woof.field("model", "User"), 157 164 woof.field("user-email", self.email), 158 165 woof.int_field("subscription-count", subscriptions |> list.length()), 159 166 ] 160 - Admin(context: _, self:, subscriptions:, users: _) -> [ 167 + Admin(context: _, data: AdminData(self:, subscriptions:, users: _)) -> [ 161 168 woof.field("model", "Admin"), 162 169 woof.field("user-email", self.email), 163 170 woof.int_field("subscription-count", subscriptions |> list.length()), ··· 390 397 persist_new_user(user, model.context.database), 391 398 ) 392 399 DatabasePersistedNewUser(Ok(user)), _ -> #( 393 - User(model.context, user, []), 400 + User(model.context, UserData(user, [])), 394 401 fetch_logged_in_data(model.context.database, user), 395 402 ) 396 403 DatabasePersistedNewUser(Error(_)), _ -> { ··· 520 527 ) 521 528 do_toast(toast, model) 522 529 } 530 + 531 + // login admin 532 + ServerVerifiedLogin(valid: True, user:), _ if user.is_admin -> #( 533 + Admin(model.context, AdminData(user, [], [])), 534 + fetch_logged_in_data(model.context.database, user), 535 + ) 536 + // login normal user 523 537 ServerVerifiedLogin(valid: True, user:), _ -> #( 524 - User(model.context, user, []), 538 + User(model.context, UserData(user, [])), 525 539 fetch_logged_in_data(model.context.database, user), 526 540 ) 541 + 527 542 ServerVerifiedLogin(valid: False, user: _), _ -> { 528 543 let toast = 529 544 toaster.Toast( ··· 549 564 550 565 // main ui bits ------------------------------------------------------------- 551 566 // user data arrived 552 - DatabaseReturnedSubscriptions(Ok(subscriptions)), User(..) -> #( 553 - User(..model, subscriptions:), 567 + DatabaseReturnedSubscriptions(Ok(subscriptions)), User(context:, data:) -> #( 568 + User(context:, data: UserData(..data, subscriptions:)), 554 569 effect.none(), 555 570 ) 556 - DatabaseReturnedSubscriptions(Ok(subscriptions)), Admin(..) -> #( 557 - Admin(..model, subscriptions:), 571 + DatabaseReturnedSubscriptions(Ok(subscriptions)), Admin(context:, data:) -> #( 572 + Admin(context:, data: AdminData(..data, subscriptions:)), 558 573 effect.none(), 559 574 ) 560 575 // nu uh ··· 580 595 do_toast(toast, model) 581 596 } 582 597 583 - DatabaseReturnedAllUsers(Ok(users)), Admin(..) -> #( 584 - Admin(..model, users:), 598 + DatabaseReturnedAllUsers(Ok(users)), Admin(context:, data:) -> #( 599 + Admin(context:, data: AdminData(..data, users:)), 585 600 effect.none(), 586 601 ) 587 602 DatabaseReturnedAllUsers(Error(_)), Admin(..) -> { ··· 767 782 busy: False, 768 783 allow_signups: context.configuration.allow_signups, 769 784 ) 770 - User(context:, self:, subscriptions: _) -> view_logged_in(context, self) 771 - Admin(context: _, self: _, subscriptions: _, users: _) -> todo 785 + User(context:, data:) -> view_logged_in_user(context, data) 786 + Admin(context:, data:) -> view_logged_in_admin(context, data) 772 787 }, 773 788 // button.button([event.on_click(SpawnToast)], [element.text("spawn toast")]), 774 789 portal.to("body", [], [ ··· 836 851 ) 837 852 } 838 853 839 - fn view_logged_in(_data: Context, _user: user.User) -> Element(Message) { 854 + fn view_logged_in_user(_context: Context, _user: UserData) -> Element(Message) { 840 855 html.div([], [ 841 856 html.h1([], [element.text("*hacker voice* im in!")]), 857 + ]) 858 + } 859 + 860 + fn view_logged_in_admin( 861 + _context: Context, 862 + _admin: AdminData, 863 + ) -> Element(Message) { 864 + html.div([], [ 865 + html.h1([], [element.text("*hacker voice* im in-er!")]), 842 866 ]) 843 867 } 844 868