Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: show delete prompt for delete actions #409

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 0 additions & 30 deletions crates/frontend/src/components/type_template_form.rs
Original file line number Diff line number Diff line change
Expand Up @@ -112,36 +112,6 @@ where

</div>

<div class="form-control">
<label class="label">
<span class="label-text">Description</span>
</label>
<textarea
placeholder="Enter description"
class="textarea textarea-bordered w-full max-w-md"
value=description_rs.get_untracked()
on:change=move |ev| {
let value = event_target_value(&ev);
description_ws.set(value);
}
/>
</div>

<div class="form-control">
<label class="label">
<span class="label-text">change_reason</span>
</label>
<textarea
placeholder="Enter change_reason"
class="textarea textarea-bordered w-full max-w-md"
value=change_reason_rs.get_untracked()
on:change=move |ev| {
let value = event_target_value(&ev);
change_reason_ws.set(value);
}
/>
</div>

<div class="form-control">
<label class="label">
<span class="label-text">Description</span>
Expand Down
50 changes: 40 additions & 10 deletions crates/frontend/src/pages/custom_types.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,15 @@ use superposition_types::custom_query::PaginationParams;
use crate::components::table::types::ColumnSortable;
use crate::components::type_template_form::utils::delete_type;
use crate::components::{
alert::AlertType,
delete_modal::DeleteModal,
drawer::{close_drawer, open_drawer, Drawer, DrawerBtn},
skeleton::Skeleton,
stat::Stat,
table::Table,
type_template_form::TypeTemplateForm,
};
use crate::providers::alert_provider::enqueue_alert;
use crate::types::{OrganisationId, Tenant};
use crate::utils::unwrap_option_or_default_with_error;
use crate::{api::fetch_types, components::table::types::Column};
Expand Down Expand Up @@ -42,6 +45,34 @@ pub fn types_page() -> impl IntoView {
)
},
);

let (delete_modal_visible_rs, delete_modal_visible_ws) = create_signal(false);
let (delete_row_rs, delete_row_ws) = create_signal::<Option<TypeTemplateRow>>(None);

let confirm_delete = Callback::new(move |_| {
if let Some(row_data) = delete_row_rs.get().clone() {
spawn_local(async move {
let tenant = tenant_rws.get().0;
let org = org_rws.get().0;
let api_response =
delete_type(tenant, row_data.clone().type_name, org).await;
match api_response {
Ok(_) => {
enqueue_alert(
format!("type template deleted successfully"),
AlertType::Success,
5000,
);
types_resource.refetch();
}
Err(err) => enqueue_alert(String::from(err), AlertType::Error, 5000),
}
types_resource.refetch();
});
}
delete_row_ws.set(None);
delete_modal_visible_ws.set(false);
});
let selected_type = create_rw_signal::<Option<TypeTemplateRow>>(None);
let table_columns = create_memo(move |_| {
vec![
Expand Down Expand Up @@ -69,16 +100,8 @@ pub fn types_page() -> impl IntoView {
delete_row_json.clone(),
)
.unwrap();
spawn_local({
async move {
let tenant = tenant_rws.get().0;
let org = org_rws.get().0;
let _ =
delete_type(tenant, row_data.clone().type_name, org)
.await;
types_resource.refetch();
}
});
delete_row_ws.set(Some(row_data));
delete_modal_visible_ws.set(true);
};
view! {
<div class="join">
Expand Down Expand Up @@ -195,6 +218,13 @@ pub fn types_page() -> impl IntoView {
/>
</div>
</div>
<DeleteModal
modal_visible=delete_modal_visible_rs
confirm_delete=confirm_delete
set_modal_visible=delete_modal_visible_ws
header_text="Are you sure you want to delete this type template? Action is irreversible."
.to_string()
/>
}
}}

Expand Down
82 changes: 59 additions & 23 deletions crates/frontend/src/pages/default_config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,19 @@ use serde_json::{json, Map, Value};
use superposition_types::custom_query::PaginationParams;

use crate::api::{delete_default_config, fetch_default_config};
use crate::components::default_config_form::DefaultConfigForm;
use crate::components::drawer::{close_drawer, open_drawer, Drawer, DrawerBtn};
use crate::components::skeleton::Skeleton;
use crate::components::stat::Stat;
use crate::components::table::types::ColumnSortable;
use crate::components::table::{
types::{Column, TablePaginationProps},
Table,
use crate::components::{
alert::AlertType,
default_config_form::DefaultConfigForm,
delete_modal::DeleteModal,
drawer::{close_drawer, open_drawer, Drawer, DrawerBtn},
skeleton::Skeleton,
stat::Stat,
table::{
types::{Column, ColumnSortable, TablePaginationProps},
Table,
},
};
use crate::providers::alert_provider::enqueue_alert;
use crate::types::{BreadCrums, OrganisationId, Tenant};
use crate::utils::{
get_local_storage, set_local_storage, unwrap_option_or_default_with_error,
Expand All @@ -35,6 +39,10 @@ pub fn default_config() -> impl IntoView {
let org_rws = use_context::<RwSignal<OrganisationId>>().unwrap();
let enable_grouping = create_rw_signal(false);
let (filters, set_filters) = create_signal(PaginationParams::default());

let (delete_modal_visible_rs, delete_modal_visible_ws) = create_signal(false);
let (delete_key_rs, delete_key_ws) = create_signal::<Option<String>>(None);

let default_config_resource = create_blocking_resource(
move || (tenant_rws.get().0, filters.get(), org_rws.get().0),
|(current_tenant, filters, org_id)| async move {
Expand All @@ -53,6 +61,39 @@ pub fn default_config() -> impl IntoView {

let set_filters_default = move || set_filters.set(PaginationParams::default());

let confirm_delete = Callback::new(move |_| {
let tenant = tenant_rws.get().0;
let org = org_rws.get().0;
let prefix = key_prefix.get().unwrap_or_default();
if let Some(key_name) = delete_key_rs.get() {
spawn_local({
async move {
let api_response = delete_default_config(
format!("{prefix}{}", key_name),
tenant,
org,
)
.await;
match api_response {
Ok(_) => {
enqueue_alert(
format!("Config {key_name} deleted successfully"),
AlertType::Success,
5000,
);
default_config_resource.refetch();
}
Err(err) => {
enqueue_alert(String::from(err), AlertType::Error, 5000)
}
}
}
});
}
delete_key_ws.set(None);
delete_modal_visible_ws.set(false);
});

create_effect(move |_| {
let enable_grouping_val =
get_local_storage::<bool>("enable_grouping").unwrap_or(false);
Expand Down Expand Up @@ -133,20 +174,8 @@ pub fn default_config() -> impl IntoView {
};

let handle_delete = move |_| {
let tenant = tenant_rws.get().0;
let org = org_rws.get().0;
let prefix = key_prefix.get().unwrap_or_default();
spawn_local({
async move {
let _ = delete_default_config(
format!("{prefix}{}", key_name.get_value()),
tenant,
org,
)
.await;
default_config_resource.refetch();
}
});
delete_key_ws.set(Some(key_name.get_value()));
delete_modal_visible_ws.set(true);
};

if is_folder && grouping_enabled {
Expand Down Expand Up @@ -360,9 +389,16 @@ pub fn default_config() -> impl IntoView {
/>
</div>
</div>
<DeleteModal
modal_visible=delete_modal_visible_rs
confirm_delete=confirm_delete
set_modal_visible=delete_modal_visible_ws
header_text="Are you sure you want to delete this config? Action is irreversible."
.to_string()
/>
}
}}

}}
</Suspense>
</div>
}
Expand Down