This repository has no description
lustre gleam
0

Configure Feed

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

:recycle: add basic message handling function

author
kacaii.dev
date (Mar 30, 2026, 10:26 PM -0300) commit f78d0a1f parent 908a9180 change-id xxptywyw
+67 -70
+67 -70
client/src/client.gleam
··· 97 97 98 98 fn update(model: Model, msg: Msg) -> #(Model, Effect(Msg)) { 99 99 case model, msg { 100 - // UI ---------------------------------------------------------------------- 101 - // 102 - // HEADER 103 - model, HeaderMsg(msg) -> handle_header_msg(model, msg) 104 - 105 - // SIDEBAR 106 - model, SidebarMsg(msg) -> handle_sidebar_msg(model, msg) 107 - 108 - // PAGES ------------------------------------------------------------------- 109 - // 110 - // LOGIN 111 - Model(route: route.Login, page: page.Login(page_model), ..), 112 - LoginMsg(page_msg) 113 - -> handle_login_msg(model, page_model, page_msg) 114 - 115 - // SIGNUP 116 - Model(route: route.Signup, page: page.Signup(page_model), ..), 117 - SignupMsg(page_msg) 118 - -> handle_signup_msg(model, page_model, page_msg) 119 - 120 - // PROFILE 121 - Model(route: route.Profile, page: page.Profile(page_model), ..), 122 - ProfileMsg(page_msg) 123 - -> handle_profile_msg(model, page_model, page_msg) 124 - 125 - // LANDING 126 - Model(route: route.Landing, page: page.Landing(_), ..), LandingMsg(_) -> #( 127 - model, 128 - effect.none(), 129 - ) 130 - 131 - // REGISTER CREW 132 - Model(route: route.RegisterCrew, page: page.RegisterCrew(page_model), ..), 133 - RegisterCrewMsg(page_msg) 134 - -> handle_register_crew_msg(model, page_model, page_msg) 135 - 136 100 // NAVIGATION -------------------------------------------------------------- 137 101 // 138 102 model, UserNavigatedTo(route) -> handle_navigation(model, route) ··· 161 125 #(model, modem.push(redirect_to, option.None, option.None)) 162 126 } 163 127 128 + // UI ---------------------------------------------------------------------- 129 + // 130 + // HEADER 131 + model, HeaderMsg(_msg) -> #(model, effect.none()) 132 + 133 + // SIDEBAR 134 + model, SidebarMsg(msg) -> handle_sidebar_msg(model, msg) 135 + 136 + // PAGES ------------------------------------------------------------------- 137 + // 138 + // LOGIN 139 + Model(route: route.Login, page: page.Login(page_model), ..), 140 + LoginMsg(page_msg) 141 + -> handle_login_msg(model, page_model, page_msg) 142 + 143 + // SIGNUP 144 + Model(route: route.Signup, page: page.Signup(page_model), ..), 145 + SignupMsg(page_msg) 146 + -> 147 + handle_msg( 148 + model:, 149 + page_model:, 150 + page_model_fn: page.Signup, 151 + page_msg:, 152 + page_msg_map: SignupMsg, 153 + update_fn: signup.update, 154 + ) 155 + 156 + // REGISTER CREW 157 + Model(route: route.RegisterCrew, page: page.RegisterCrew(page_model), ..), 158 + RegisterCrewMsg(page_msg) 159 + -> 160 + handle_msg( 161 + model:, 162 + page_model:, 163 + page_model_fn: page.RegisterCrew, 164 + page_msg:, 165 + page_msg_map: RegisterCrewMsg, 166 + update_fn: register_crew.update, 167 + ) 168 + 169 + // PROFILE 170 + Model(route: route.Profile, page: page.Profile(_page_model), ..), 171 + ProfileMsg(_page_msg) 172 + -> #(model, effect.none()) 173 + 174 + // LANDING 175 + Model(route: route.Landing, page: page.Landing(_), ..), LandingMsg(_) -> #( 176 + model, 177 + effect.none(), 178 + ) 179 + 164 180 // FALLBACK ---------------------------------------------------------------- 165 181 // 166 182 model, _ -> #(model, effect.none()) 167 183 } 168 184 } 169 185 170 - fn handle_register_crew_msg( 171 - model: Model, 172 - page_model: register_crew.Model, 173 - page_msg: register_crew.Msg, 174 - ) -> #(Model, Effect(Msg)) { 175 - let #(page_model, effect) = register_crew.update(page_model, page_msg) 176 - let page = page.RegisterCrew(page_model) 177 - let effect = effect.map(effect, RegisterCrewMsg) 178 - 179 - #(Model(..model, page:), effect) 180 - } 181 - 182 - fn handle_profile_msg( 183 - model: Model, 184 - _page_model: profile.Model, 185 - _page_msg: profile.Msg, 186 - ) -> #(Model, Effect(Msg)) { 187 - #(model, effect.none()) 188 - } 189 - 190 186 // VIEW ------------------------------------------------------------------------ 191 187 192 188 fn layout( ··· 250 246 #(model, effect.none()) 251 247 } 252 248 253 - fn handle_header_msg(model: Model, _msg: header.Msg) -> #(Model, Effect(Msg)) { 254 - #(model, effect.none()) 249 + /// Default message handling. 250 + /// Updates the current page model. 251 + fn handle_msg( 252 + model model: Model, 253 + page_model page_model: a, 254 + page_model_fn page_model_fn: fn(a) -> page.Page, 255 + page_msg page_msg: b, 256 + page_msg_map page_msg_map: fn(b) -> Msg, 257 + update_fn update_fn: fn(a, b) -> #(a, Effect(b)), 258 + ) -> #(Model, Effect(Msg)) { 259 + let #(page_model, effect) = update_fn(page_model, page_msg) 260 + let page = page_model_fn(page_model) 261 + let effect = effect.map(effect, page_msg_map) 262 + 263 + #(Model(..model, page:), effect) 255 264 } 256 265 257 266 fn handle_sidebar_msg(model: Model, msg: sidebar.Msg) -> #(Model, Effect(Msg)) { ··· 300 309 } 301 310 } 302 311 } 303 - 304 - fn handle_signup_msg( 305 - model: Model, 306 - page_model: signup.Model, 307 - page_msg: signup.Msg, 308 - ) -> #(Model, Effect(Msg)) { 309 - let #(page_model, effect) = signup.update(page_model, page_msg) 310 - let page = page.Signup(page_model) 311 - let effect = effect.map(effect, SignupMsg) 312 - 313 - #(Model(..model, page:), effect) 314 - }