nsarrazin HF Staff commited on
Commit
6041b51
·
unverified ·
1 Parent(s): 23637ad

feat(api): replace all conv deletion form by API endpoint (#1695)

Browse files
src/routes/api/conversations/+server.ts CHANGED
@@ -42,3 +42,13 @@ export async function GET({ locals, url }) {
42
  return Response.json({ message: "Must have session cookie" }, { status: 401 });
43
  }
44
  }
 
 
 
 
 
 
 
 
 
 
 
42
  return Response.json({ message: "Must have session cookie" }, { status: 401 });
43
  }
44
  }
45
+
46
+ export async function DELETE({ locals }) {
47
+ if (locals.user?._id || locals.sessionId) {
48
+ await collections.conversations.deleteMany({
49
+ ...authCondition(locals),
50
+ });
51
+ }
52
+
53
+ return new Response();
54
+ }
src/routes/conversations/+page.server.ts DELETED
@@ -1,17 +0,0 @@
1
- import { base } from "$app/paths";
2
- import { authCondition } from "$lib/server/auth";
3
- import { collections } from "$lib/server/database";
4
- import { redirect } from "@sveltejs/kit";
5
-
6
- export const actions = {
7
- async delete({ locals }) {
8
- // double check we have a user to delete conversations for
9
- if (locals.user?._id || locals.sessionId) {
10
- await collections.conversations.deleteMany({
11
- ...authCondition(locals),
12
- });
13
- }
14
-
15
- redirect(303, `${base}/`);
16
- },
17
- };
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
src/routes/settings/(nav)/+page.svelte CHANGED
@@ -1,17 +1,13 @@
1
  <script lang="ts">
2
- import Modal from "$lib/components/Modal.svelte";
3
- import CarbonClose from "~icons/carbon/close";
4
  import CarbonTrashCan from "~icons/carbon/trash-can";
5
  import CarbonArrowUpRight from "~icons/carbon/arrow-up-right";
6
 
7
- import { enhance } from "$app/forms";
8
- import { base } from "$app/paths";
9
-
10
  import { useSettingsStore } from "$lib/stores/settings";
11
  import Switch from "$lib/components/Switch.svelte";
12
  import { env as envPublic } from "$env/dynamic/public";
13
-
14
- let isConfirmingDeletion = $state(false);
 
15
 
16
  let settings = useSettingsStore();
17
  </script>
@@ -85,9 +81,20 @@
85
  ><CarbonArrowUpRight class="mr-1.5 shrink-0 text-sm " /> Share your feedback on HuggingChat</a
86
  >
87
  <button
88
- onclick={(e) => {
89
  e.preventDefault();
90
- isConfirmingDeletion = true;
 
 
 
 
 
 
 
 
 
 
 
91
  }}
92
  type="submit"
93
  class="flex items-center underline decoration-gray-300 underline-offset-2 hover:decoration-gray-700"
@@ -95,40 +102,4 @@
95
  >
96
  </div>
97
  </div>
98
-
99
- {#if isConfirmingDeletion}
100
- <Modal on:close={() => (isConfirmingDeletion = false)}>
101
- <form
102
- use:enhance={() => {
103
- isConfirmingDeletion = false;
104
- }}
105
- method="post"
106
- action="{base}/conversations?/delete"
107
- class="flex w-full flex-col gap-5 p-6"
108
- >
109
- <div class="flex items-start justify-between text-xl font-semibold text-gray-800">
110
- <h2>Are you sure?</h2>
111
- <button
112
- type="button"
113
- class="group"
114
- onclick={(e) => {
115
- e.stopPropagation();
116
- isConfirmingDeletion = false;
117
- }}
118
- >
119
- <CarbonClose class="text-gray-900 group-hover:text-gray-500" />
120
- </button>
121
- </div>
122
- <p class="text-gray-800">
123
- This action will delete all your conversations. This cannot be undone.
124
- </p>
125
- <button
126
- type="submit"
127
- class="mt-2 rounded-full bg-red-700 px-5 py-2 text-lg font-semibold text-gray-100 ring-gray-400 ring-offset-1 transition-all hover:ring focus-visible:outline-none focus-visible:ring"
128
- >
129
- Confirm deletion
130
- </button>
131
- </form>
132
- </Modal>
133
- {/if}
134
  </div>
 
1
  <script lang="ts">
 
 
2
  import CarbonTrashCan from "~icons/carbon/trash-can";
3
  import CarbonArrowUpRight from "~icons/carbon/arrow-up-right";
4
 
 
 
 
5
  import { useSettingsStore } from "$lib/stores/settings";
6
  import Switch from "$lib/components/Switch.svelte";
7
  import { env as envPublic } from "$env/dynamic/public";
8
+ import { goto } from "$app/navigation";
9
+ import { error } from "$lib/stores/errors";
10
+ import { base } from "$app/paths";
11
 
12
  let settings = useSettingsStore();
13
  </script>
 
81
  ><CarbonArrowUpRight class="mr-1.5 shrink-0 text-sm " /> Share your feedback on HuggingChat</a
82
  >
83
  <button
84
+ onclick={async (e) => {
85
  e.preventDefault();
86
+
87
+ confirm("Are you sure you want to delete all conversations?") &&
88
+ (await fetch(`${base}/api/conversations`, {
89
+ method: "DELETE",
90
+ })
91
+ .then(async () => {
92
+ await goto(`${base}/`, { invalidateAll: true });
93
+ })
94
+ .catch((err) => {
95
+ console.error(err);
96
+ $error = err.message;
97
+ }));
98
  }}
99
  type="submit"
100
  class="flex items-center underline decoration-gray-300 underline-offset-2 hover:decoration-gray-700"
 
102
  >
103
  </div>
104
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
105
  </div>