73 lines
2.2 KiB
Rust
73 lines
2.2 KiB
Rust
use gloo::{console::log, events::EventListener, net::http::Request};
|
|
use wasm_bindgen::prelude::*;
|
|
use wasm_bindgen_futures::spawn_local;
|
|
use web_sys::{Document, HtmlInputElement};
|
|
|
|
use crate::toast::{self, Level};
|
|
|
|
pub fn recipe_edit(doc: Document) -> Result<(), JsValue> {
|
|
let title_input = doc.get_element_by_id("title_field").unwrap();
|
|
Ok(())
|
|
}
|
|
|
|
pub fn user_edit(doc: Document) -> Result<(), JsValue> {
|
|
log!("user_edit");
|
|
|
|
let button = doc
|
|
.query_selector("#user-edit input[type='button']")?
|
|
.unwrap();
|
|
|
|
let on_click_submit = EventListener::new(&button, "click", move |_event| {
|
|
log!("Click!");
|
|
|
|
let input_name = doc.get_element_by_id("input-name").unwrap();
|
|
let name = input_name.dyn_ref::<HtmlInputElement>().unwrap().value();
|
|
|
|
let update_data = common::ron_api::UpdateProfile {
|
|
name: Some(name),
|
|
email: None,
|
|
password: None,
|
|
};
|
|
|
|
let body = common::ron_api::to_string(update_data);
|
|
|
|
let doc = doc.clone();
|
|
spawn_local(async move {
|
|
match Request::put("/ron-api/user/update")
|
|
.header("Content-Type", "application/ron")
|
|
.body(body)
|
|
.unwrap()
|
|
.send()
|
|
.await
|
|
{
|
|
Ok(resp) => {
|
|
log!("Status code: {}", resp.status());
|
|
if resp.status() == 200 {
|
|
toast::show(Level::Info, "Profile saved", doc);
|
|
} else {
|
|
toast::show(
|
|
Level::Error,
|
|
&format!(
|
|
"Status code: {} {}",
|
|
resp.status(),
|
|
resp.text().await.unwrap()
|
|
),
|
|
doc,
|
|
);
|
|
}
|
|
}
|
|
Err(error) => {
|
|
toast::show(
|
|
Level::Info,
|
|
&format!("Internal server error: {}", error),
|
|
doc,
|
|
);
|
|
}
|
|
}
|
|
});
|
|
});
|
|
|
|
on_click_submit.forget();
|
|
|
|
Ok(())
|
|
}
|