tangled
alpha
login
or
join now
kacaii.dev
/
sigo
0
fork
atom
๐ฉโ๐ Firefighters API written in Gleam!
lustre
gleam
0
fork
atom
overview
issues
pulls
pipelines
:construction: handle input messages
kacaii.dev
2 weeks ago
a606cf2c
17540924
verified
This commit was signed with the committer's
known signature
.
kacaii.dev
SSH Key Fingerprint:
SHA256:n9v7QGNWHCUv1x/483hCtPUvTsVabU5PzC5CSJMUNtI=
+32
-6
2 changed files
expand all
collapse all
unified
split
client
src
client
page
signup.gleam
client.gleam
+8
-4
client/src/client.gleam
···
107
107
LoginMsg(page_msg)
108
108
-> handle_login_msg(model, page_model, page_msg)
109
109
110
110
+
// SIGNUP
110
111
Model(session: _, route: route.Signup, page: page.Signup(page_model), ..),
111
112
SignupMsg(page_msg)
112
113
-> handle_signup_msg(model, page_model, page_msg)
···
289
290
290
291
fn handle_signup_msg(
291
292
model: Model,
292
292
-
_page_model: signup.Model,
293
293
-
_page_msg: signup.Msg,
293
293
+
page_model: signup.Model,
294
294
+
page_msg: signup.Msg,
294
295
) -> #(Model, effect.Effect(Msg)) {
295
295
-
// TODO:
296
296
-
#(model, effect.none())
296
296
+
let #(page_model, effect) = signup.update(page_model, page_msg)
297
297
+
let page = page.Signup(page_model)
298
298
+
let effect = effect.map(effect, SignupMsg)
299
299
+
300
300
+
#(Model(..model, page:), effect)
297
301
}
+24
-2
client/src/client/page/signup.gleam
···
2
2
import client/ui/nerd_font
3
3
import gleam/http/response
4
4
import gleam/list
5
5
+
import gleam/string
5
6
import lustre/attribute.{class} as attr
6
7
import lustre/effect
7
8
import lustre/element
···
19
20
user_confirm_password: "",
20
21
user_is_active: False,
21
22
loading: False,
23
23
+
text_message: "",
22
24
)
23
25
24
26
pub type Model {
···
30
32
user_confirm_password: String,
31
33
user_is_active: Bool,
32
34
loading: Bool,
35
35
+
text_message: String,
33
36
)
34
37
}
35
38
···
95
98
class("rounded-md border border-surface"),
96
99
]
97
100
98
98
-
html.div(attributes, [fieldset(model), button(model)])
101
101
+
html.div(attributes, [fieldset(model), button(model), text_message(model)])
102
102
+
}
103
103
+
104
104
+
fn text_message(model: Model) -> element.Element(Msg) {
105
105
+
case model.text_message {
106
106
+
"" -> element.none()
107
107
+
text -> html.p([], [html.text(text)])
108
108
+
}
99
109
}
100
110
101
111
fn button(model: Model) -> element.Element(Msg) {
112
112
+
let required_fields = [
113
113
+
model.user_name,
114
114
+
model.user_email,
115
115
+
model.user_password,
116
116
+
model.user_confirm_password,
117
117
+
]
118
118
+
119
119
+
let disabled =
120
120
+
model.loading
121
121
+
|| model.user_password != model.user_confirm_password
122
122
+
|| list.any(required_fields, string.is_empty)
123
123
+
102
124
let icon = case model.loading {
103
125
True -> nerd_font.icon([class("animate-spin")], "extra-progress_spinner_1")
104
126
False -> nerd_font.icon([], "fa-user_plus")
···
111
133
class("diabled:text-primary disabled:bg-surface"),
112
134
113
135
event.on_click(UserSentRequest),
114
114
-
attr.disabled(model.loading),
136
136
+
attr.disabled(disabled),
115
137
]
116
138
117
139
html.button(attributes, [icon, html.text("Register")])