From b6754102c68d60a8e208704940838c5c1bda27ce Mon Sep 17 00:00:00 2001 From: Franklin Date: Tue, 25 Apr 2023 18:47:38 -0400 Subject: [PATCH] Finished agent delete --- src/components/admin_agent.rs | 18 +++++++++++++++++- src/pages/admin/agents.rs | 8 +++++++- src/pages/admin/fields/agent.rs | 1 - 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/components/admin_agent.rs b/src/components/admin_agent.rs index 315a3af..f2d08a4 100644 --- a/src/components/admin_agent.rs +++ b/src/components/admin_agent.rs @@ -4,7 +4,7 @@ use yew_router::prelude::use_navigator; use crate::{ pages::admin::edit::{EditItem, EditType}, - routes::main_router::Route, + routes::main_router::Route, api::backend::delete_agent, }; //TODO: Add admin tag @@ -15,8 +15,23 @@ pub fn admin_agent(props: &AdminAgentProps) -> Html { let is_attempting_delete = use_state(|| false); let delete_agent = { let is_attempting_delete = is_attempting_delete.clone(); + let deletecb = props.deletecb.clone(); + let index = props.index.clone(); + let agent_id = props.agent.id.clone(); Callback::from(move |event: MouseEvent| { if *is_attempting_delete { + let is_attempting_delete = is_attempting_delete.clone(); + let deletecb = deletecb.clone(); + let index = index.clone(); + let agent_id = agent_id.clone(); + wasm_bindgen_futures::spawn_local(async move { + match delete_agent(&agent_id).await { + Ok(_) => deletecb.emit(index), + Err(error) => { + log::error!("Error deleting agent: {error}") + } + }; + }); // Call delete is_attempting_delete.set(false); } else { @@ -59,5 +74,6 @@ pub fn admin_agent(props: &AdminAgentProps) -> Html { #[derive(PartialEq, Properties, Clone)] pub struct AdminAgentProps { pub agent: Agent, + pub deletecb: Callback, pub index: usize, } diff --git a/src/pages/admin/agents.rs b/src/pages/admin/agents.rs index 3f48a9b..eb8876d 100644 --- a/src/pages/admin/agents.rs +++ b/src/pages/admin/agents.rs @@ -35,7 +35,13 @@ pub fn admin_agents() -> Html {
{(*agents).clone().into_iter().enumerate().map(|(key, agent)| html! { <> - +
}).collect::()} diff --git a/src/pages/admin/fields/agent.rs b/src/pages/admin/fields/agent.rs index bb2feb4..6c0e87f 100644 --- a/src/pages/admin/fields/agent.rs +++ b/src/pages/admin/fields/agent.rs @@ -67,7 +67,6 @@ pub fn agent_fields(props: &AgentFieldsProps) -> Html { // Fields to be sent to the backend let agent_name_handle = agent_name_handle.clone(); - let agent_shortcode_handle = agent_shortcode_handle.clone(); let profile_picture_url_handle = profile_picture_url_handle.clone(); let credential_handle = credential_handle.clone(); let credential_type = credential_type.clone();