fix(web): email not needed, show register feedback

This commit is contained in:
əlemi 2024-06-24 02:53:20 +02:00
parent 19a6ca2fcb
commit 8f65740c14
Signed by: alemi
GPG key ID: A4895B84D311642C

View file

@ -8,6 +8,12 @@ macro_rules! get_ref {
} }
} }
macro_rules! reset_ref {
($r:ident) => {
$r.get().map(|x| x.set_value(""))
}
}
// TODO this should get moved in a common crate so its not duplicated across FE/BE // TODO this should get moved in a common crate so its not duplicated across FE/BE
#[derive(Debug, Clone, serde::Serialize)] #[derive(Debug, Clone, serde::Serialize)]
pub struct RegisterForm { pub struct RegisterForm {
@ -34,6 +40,7 @@ pub fn RegisterPage() -> impl IntoView {
<div class="border ma-2 pa-1"> <div class="border ma-2 pa-1">
<form on:submit=move|ev| { <form on:submit=move|ev| {
ev.prevent_default(); ev.prevent_default();
set_error.set(None);
let email = get_ref!(username_ref); let email = get_ref!(username_ref);
let password = get_ref!(password_ref); let password = get_ref!(password_ref);
let display_name = get_ref!(display_name_ref); let display_name = get_ref!(display_name_ref);
@ -53,16 +60,29 @@ pub fn RegisterPage() -> impl IntoView {
password: password.unwrap_or_default(), password: password.unwrap_or_default(),
display_name, summary, avatar_url, banner_url display_name, summary, avatar_url, banner_url
}; };
if let Err(e) = Http::request(Method::PUT, &format!("{URL_BASE}/auth"), Some(&payload), auth).await { match Http::request(Method::PUT, &format!("{URL_BASE}/auth"), Some(&payload), auth).await {
set_error.set(Some( Err(e) => set_error.set(Some(
view! { <blockquote>{e.to_string()}</blockquote> } view! { <blockquote>{e.to_string()}</blockquote> }
)); )),
Ok(res) => match res.error_for_status() {
Err(e) => set_error.set(Some(
view! { <blockquote>{e.to_string()}</blockquote> }
)),
Ok(_) => {
reset_ref!(username_ref);
reset_ref!(password_ref);
reset_ref!(display_name_ref);
reset_ref!(summary_ref);
reset_ref!(avatar_url_ref);
reset_ref!(banner_url_ref);
},
},
} }
}); });
} > } >
<div class="col-side mb-0">username</div> <div class="col-side mb-0">username</div>
<div class="col-main"> <div class="col-main">
<input class="w-100" type="email" node_ref=username_ref placeholder="doll" /> <input class="w-100" type="text" node_ref=username_ref placeholder="doll" />
</div> </div>
<div class="col-side mb-0">password</div> <div class="col-side mb-0">password</div>