update user functionality and cleanup
This commit is contained in:
+10
-11
@@ -52,12 +52,12 @@ impl Page {
|
||||
let result = match url.next_path_part() {
|
||||
None | Some("list_links") => Self::Home(pages::list_links::init(
|
||||
url,
|
||||
&mut orders.proxy(Msg::ListLinksMsg),
|
||||
&mut orders.proxy(Msg::ListLinks),
|
||||
i18n,
|
||||
)),
|
||||
Some("list_users") => Self::ListUsers(pages::list_users::init(
|
||||
url,
|
||||
&mut orders.proxy(Msg::ListUsersMsg),
|
||||
&mut orders.proxy(Msg::ListUsers),
|
||||
i18n,
|
||||
)),
|
||||
_other => Self::NotFound,
|
||||
@@ -71,12 +71,11 @@ impl Page {
|
||||
// ------ ------
|
||||
// Update
|
||||
// ------ ------
|
||||
#[allow(renamed_and_removed_lints, pub_enum_variant_names)]
|
||||
#[derive(Clone)]
|
||||
pub enum Msg {
|
||||
UrlChanged(subs::UrlChanged),
|
||||
ListLinksMsg(list_links::Msg),
|
||||
ListUsersMsg(list_users::Msg),
|
||||
ListLinks(list_links::Msg),
|
||||
ListUsers(list_users::Msg),
|
||||
NoMessage,
|
||||
}
|
||||
|
||||
@@ -87,14 +86,14 @@ fn update(msg: Msg, model: &mut Model, orders: &mut impl Orders<Msg>) {
|
||||
|
||||
model.page = Page::init(url.0, orders, model.i18n.clone());
|
||||
}
|
||||
Msg::ListLinksMsg(msg) => {
|
||||
Msg::ListLinks(msg) => {
|
||||
if let Page::Home(model) = &mut model.page {
|
||||
list_links::update(msg, model, &mut orders.proxy(Msg::ListLinksMsg))
|
||||
list_links::update(msg, model, &mut orders.proxy(Msg::ListLinks))
|
||||
}
|
||||
}
|
||||
Msg::ListUsersMsg(msg) => {
|
||||
Msg::ListUsers(msg) => {
|
||||
if let Page::ListUsers(model) = &mut model.page {
|
||||
list_users::update(msg, model, &mut orders.proxy(Msg::ListUsersMsg))
|
||||
list_users::update(msg, model, &mut orders.proxy(Msg::ListUsers))
|
||||
}
|
||||
}
|
||||
Msg::NoMessage => (),
|
||||
@@ -165,8 +164,8 @@ fn view_content(page: &Page, url: &Url) -> Node<Msg> {
|
||||
div![
|
||||
C!["container"],
|
||||
match page {
|
||||
Page::Home(model) => pages::list_links::view(model).map_msg(Msg::ListLinksMsg),
|
||||
Page::ListUsers(model) => pages::list_users::view(model).map_msg(Msg::ListUsersMsg),
|
||||
Page::Home(model) => pages::list_links::view(model).map_msg(Msg::ListLinks),
|
||||
Page::ListUsers(model) => pages::list_users::view(model).map_msg(Msg::ListUsers),
|
||||
Page::NotFound => div![div![url.to_string()], "Page not found!"],
|
||||
}
|
||||
]
|
||||
|
||||
@@ -26,7 +26,7 @@ pub fn navigation(i18n: &I18n, base_url: &Url) -> Node<Msg> {
|
||||
li![a![ev(Ev::Click, |_| Msg::NoMessage), t!("add-link"),],],
|
||||
li![a![
|
||||
attrs! {At::Href => crate::Urls::new(base_url).create_user()},
|
||||
ev(Ev::Click, |_| Msg::ListUsersMsg(
|
||||
ev(Ev::Click, |_| Msg::ListUsers(
|
||||
super::pages::list_users::Msg::Edit(
|
||||
super::pages::list_users::UserEditMsg::CreateNewUser
|
||||
)
|
||||
|
||||
@@ -49,6 +49,7 @@ struct FilterInput {
|
||||
pub enum Msg {
|
||||
Query(UserQueryMsg),
|
||||
Edit(UserEditMsg),
|
||||
ClearAll,
|
||||
}
|
||||
|
||||
/// All the messages on user Querying
|
||||
@@ -81,6 +82,10 @@ pub fn update(msg: Msg, model: &mut Model, orders: &mut impl Orders<Msg>) {
|
||||
match msg {
|
||||
Msg::Query(msg) => process_query_messages(msg, model, orders),
|
||||
Msg::Edit(msg) => process_user_edit_messages(msg, model, orders),
|
||||
Msg::ClearAll => {
|
||||
model.last_message = None;
|
||||
model.user_edit = None;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -176,6 +181,7 @@ pub fn process_user_edit_messages(
|
||||
match msg {
|
||||
UserEditMsg::EditUserSelected(user) => {
|
||||
log!("Editing user: ", user);
|
||||
model.last_message = None;
|
||||
model.user_edit = Some(RefCell::new(user))
|
||||
}
|
||||
UserEditMsg::CreateNewUser => {
|
||||
@@ -216,10 +222,13 @@ pub fn process_user_edit_messages(
|
||||
orders.perform_cmd(async {
|
||||
let data = data;
|
||||
let response = match fetch(
|
||||
Request::new("/admin/json/create_user/")
|
||||
.method(Method::Post)
|
||||
.json(&data)
|
||||
.expect("serialization failed"),
|
||||
Request::new(match data.edit {
|
||||
EditMode::Create => "/admin/json/create_user/",
|
||||
EditMode::Edit => "/admin/json/update_user/",
|
||||
})
|
||||
.method(Method::Post)
|
||||
.json(&data)
|
||||
.expect("serialization failed"),
|
||||
)
|
||||
.await
|
||||
{
|
||||
@@ -256,11 +265,22 @@ pub fn view(model: &Model) -> Node<Msg> {
|
||||
let lang = model.i18n.clone();
|
||||
let t = move |key: &str| lang.translate(key, None);
|
||||
section![
|
||||
keyboard_ev(Ev::KeyDown, |keyboard_event| {
|
||||
IF!(keyboard_event.key() == "Escape" => Msg::ClearAll)
|
||||
}),
|
||||
h1!("List Users Page from list_users"),
|
||||
if let Some(message) = &model.last_message {
|
||||
div![C!("Message"), &message.message]
|
||||
div![
|
||||
C!["message", "center"],
|
||||
div![
|
||||
C!["closebutton"],
|
||||
a!["\u{d7}"],
|
||||
ev(Ev::Click, |_| Msg::ClearAll)
|
||||
],
|
||||
&message.message
|
||||
]
|
||||
} else {
|
||||
section!()
|
||||
section![]
|
||||
},
|
||||
table![
|
||||
// Column Headlines
|
||||
@@ -363,6 +383,11 @@ fn edit_or_create_user<F: Fn(&str) -> String>(l: &RefCell<UserDelta>, t: F) -> N
|
||||
let user = l.borrow();
|
||||
div![
|
||||
C!["editdialog", "center"],
|
||||
div![
|
||||
C!["closebutton"],
|
||||
a!["\u{d7}"],
|
||||
ev(Ev::Click, |_| Msg::ClearAll)
|
||||
],
|
||||
h1![match &user.edit {
|
||||
EditMode::Edit => t("edit-user"),
|
||||
EditMode::Create => t("new-user"),
|
||||
|
||||
Reference in New Issue
Block a user