Skip to content

Commit a974dc5

Browse files
authored
Merge pull request #1597 from appwrite/add-friction-to-deletions
Add confirmation to deletions
2 parents 70ce968 + b7aee62 commit a974dc5

File tree

4 files changed

+34
-9
lines changed

4 files changed

+34
-9
lines changed

src/routes/(console)/project-[project]/functions/function-[function]/settings/dangerZone.svelte

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,4 @@
2727
</svelte:fragment>
2828
</CardGrid>
2929

30-
<Delete bind:showDelete />
30+
<Delete projectFunction={$func} bind:showDelete />

src/routes/(console)/project-[project]/functions/function-[function]/settings/deleteModal.svelte

+28-4
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,18 @@
66
import Confirm from '$lib/components/confirm.svelte';
77
import { addNotification } from '$lib/stores/notifications';
88
import { sdk } from '$lib/stores/sdk';
9+
import { type Models } from '@appwrite.io/console';
10+
import { FormList, InputCheckbox } from '$lib/elements/forms';
911
1012
export let showDelete = false;
11-
const functionId = $page.params.function;
13+
export let projectFunction: Models.Function;
14+
1215
let error: string;
16+
let confirmedDeletion = false;
17+
1318
const handleSubmit = async () => {
1419
try {
15-
await sdk.forProject.functions.delete(functionId);
20+
await sdk.forProject.functions.delete(projectFunction.$id);
1621
showDelete = false;
1722
addNotification({
1823
type: 'success',
@@ -27,6 +32,25 @@
2732
};
2833
</script>
2934

30-
<Confirm onSubmit={handleSubmit} title="Delete function" bind:open={showDelete} bind:error>
31-
Are you sure you want to delete this function and all associated deployments from your project?
35+
<Confirm
36+
onSubmit={handleSubmit}
37+
disabled={!confirmedDeletion}
38+
title="Delete function"
39+
bind:open={showDelete}
40+
bind:error>
41+
<FormList>
42+
<p data-private>Are you sure you want to delete <strong>{projectFunction.name}</strong>?</p>
43+
44+
<p data-private>
45+
The function and all associated deployments will be permanently deleted. This action is
46+
irreversible.
47+
</p>
48+
49+
<InputCheckbox
50+
size="s"
51+
required
52+
id="delete_function"
53+
bind:checked={confirmedDeletion}
54+
label="I understand and confirm" />
55+
</FormList>
3256
</Confirm>

src/routes/(console)/project-[project]/sites/site-[site]/settings/dangerZone.svelte

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
<script lang="ts">
22
import { BoxAvatar, CardGrid } from '$lib/components';
3-
import Heading from '$lib/components/heading.svelte';
43
import { Button } from '$lib/elements/forms';
54
import { toLocaleDateTime } from '$lib/helpers/date';
65
import type { Models } from '@appwrite.io/console';
@@ -28,4 +27,4 @@
2827
</svelte:fragment>
2928
</CardGrid>
3029

31-
<Delete bind:showDelete />
30+
<Delete {site} bind:showDelete />

src/routes/(console)/project-[project]/sites/site-[site]/settings/deleteModal.svelte

+4-2
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,15 @@
66
import Confirm from '$lib/components/confirm.svelte';
77
import { addNotification } from '$lib/stores/notifications';
88
import { sdk } from '$lib/stores/sdk';
9+
import { type Models } from '@appwrite.io/console';
910
11+
export let site: Models.Site;
1012
export let showDelete = false;
11-
const siteId = $page.params.site;
13+
1214
let error: string;
1315
const handleSubmit = async () => {
1416
try {
15-
await sdk.forProject.sites.delete(siteId);
17+
await sdk.forProject.sites.delete(site.$id);
1618
showDelete = false;
1719
addNotification({
1820
type: 'success',

0 commit comments

Comments
 (0)