diff --git a/src/client.gleam b/src/client.gleam index 89febde..d4ad0b5 100644 --- a/src/client.gleam +++ b/src/client.gleam @@ -13,7 +13,7 @@ import gleam/http/response import gleam/option import gleam/uri import lustre -import lustre/attribute as attr +import lustre/attribute.{class} as attr import lustre/effect.{type Effect} import lustre/element.{type Element} import lustre/element/html @@ -133,10 +133,12 @@ fn layout( map view: Element(page_message), with fun: fn(page_message) -> Message, ) -> Element(Message) { + let style = class("p-0") + html.section([attr.data("sidebar-layout", "")], [ navbar.view(model.session, model.lang) |> element.map(NavbarMessage), sidebar.view(model.session) |> element.map(SidebarMessage), - html.main([attr.class("p-0")], [view |> element.map(fun)]), + html.main([style], [view |> element.map(fun)]), ]) } @@ -183,12 +185,7 @@ pub fn update(model: Model, message: Message) -> #(Model, Effect(Message)) { let route = on_success let #(page, init_page) = page.init(route) - let redirect = - route - |> route.path - |> modem.push(option.None, option.None) - - let effect = effect.batch([init_page, redirect]) + let effect = effect.batch([init_page, redirect(to: route)]) #(Model(..model, session:, route:, page:), effect) } @@ -200,12 +197,7 @@ pub fn update(model: Model, message: Message) -> #(Model, Effect(Message)) { let route = on_failure let #(page, init_page) = page.init(route) - let redirect = - route - |> route.path - |> modem.push(option.None, option.None) - - let effect = effect.batch([init_page, redirect]) + let effect = effect.batch([init_page, redirect(to: route)]) #(Model(..model, route:, page:, session: session.Guest), effect) } @@ -213,9 +205,7 @@ pub fn update(model: Model, message: Message) -> #(Model, Effect(Message)) { // Redirect user to the Home page. model, ServerRemovedToken(result: Ok(..)) -> #( Model(..model, session: session.Guest), - route.Home - |> route.path - |> modem.push(option.None, option.None), + redirect(to: route.Home), ) // PAGES ------------------------------------------------------------------- @@ -271,9 +261,7 @@ fn handle_login_step( // protected routes. login.ServerAuthenticatedUser(session:) -> #( Model(..model, session:), - route.Dashboard - |> route.path - |> modem.push(option.None, option.None), + redirect(to: route.Dashboard), ) //  Server failed to authenticate the Client, display a error message @@ -302,3 +290,8 @@ fn handle_login_step( } } } + +fn redirect(to route: route.Route) -> Effect(Message) { + route.path(route) + |> modem.push(option.None, option.None) +}