๐Ÿ‘ฉโ€๐Ÿš’ Firefighters API written in Gleam!
lustre gleam

:recycle: add function to bundle the view functions

kacaii.dev 6f09b6f7 dfbd19cd

verified
+17 -27
+17 -27
client/src/client.gleam
··· 152 152 153 153 // VIEW ------------------------------------------------------------------------ 154 154 155 + fn render_page( 156 + model: Model, 157 + element_view: element.Element(a), 158 + f: fn(a) -> Msg, 159 + ) -> element.Element(Msg) { 160 + element.fragment([ 161 + header.view(model.session) |> element.map(HeaderMsg), 162 + sidebar.view(model.session, model.sidebar) |> element.map(SidebarMsg), 163 + element_view |> element.map(f), 164 + ]) 165 + } 166 + 155 167 fn view(model: Model) -> element.Element(Msg) { 156 168 case model { 157 169 // LANDING PAGE ------------------------------------------------------------ 158 170 Model(session:, route: route.Landing, page: page.Landing(page_model), ..) -> 159 - element.fragment([ 160 - header.view(session) |> element.map(HeaderMsg), 161 - sidebar.view(session, model.sidebar) |> element.map(SidebarMsg), 162 - landing.view(session, page_model) |> element.map(LandingMsg), 163 - ]) 171 + render_page(model, landing.view(session, page_model), LandingMsg) 164 172 165 173 // LOGIN PAGE -------------------------------------------------------------- 166 174 Model(session:, route: route.Login, page: page.Login(page_model), ..) -> 167 - element.fragment([ 168 - header.view(session) |> element.map(HeaderMsg), 169 - sidebar.view(session, model.sidebar) |> element.map(SidebarMsg), 170 - login.view(session, page_model) |> element.map(LoginMsg), 171 - ]) 175 + render_page(model, login.view(session, page_model), LoginMsg) 172 176 173 177 // DASHBOARD PAGE ---------------------------------------------------------- 174 178 Model( ··· 176 180 route: route.Dashboard, 177 181 page: page.Dashboard(page_model), 178 182 .., 179 - ) -> 180 - element.fragment([ 181 - header.view(session) |> element.map(HeaderMsg), 182 - sidebar.view(session, model.sidebar) |> element.map(SidebarMsg), 183 - dashboard.view(session, page_model) |> element.map(DashboardMsg), 184 - ]) 183 + ) -> render_page(model, dashboard.view(session, page_model), DashboardMsg) 185 184 186 185 // SIGNUP PAGE ------------------------------------------------------------- 187 186 Model(session:, route: route.Signup, page: page.Signup(page_model), ..) -> 188 - element.fragment([ 189 - header.view(session) |> element.map(HeaderMsg), 190 - sidebar.view(session, model.sidebar) |> element.map(SidebarMsg), 191 - signup.view(session, page_model) |> element.map(SignupMsg), 192 - ]) 187 + render_page(model, signup.view(session, page_model), SignupMsg) 193 188 194 189 // FALLBACK ---------------------------------------------------------------- 195 - model -> 196 - element.fragment([ 197 - header.view(model.session) |> element.map(HeaderMsg), 198 - sidebar.view(model.session, model.sidebar) |> element.map(SidebarMsg), 199 - not_found.view() |> element.map(NotFoundMsg), 200 - ]) 190 + model -> render_page(model, not_found.view(), NotFoundMsg) 201 191 } 202 192 } 203 193