···
import { Button } from "../components/button.jsx";
import { JSONType, JSONValue } from "../components/json.jsx";
import { agent } from "../components/login.jsx";
11
+
import { Modal } from "../components/modal.jsx";
import { StickyOverlay } from "../components/sticky.jsx";
import { TextInput } from "../components/text-input.jsx";
import Tooltip from "../components/tooltip.jsx";
···
const [batchDelete, setBatchDelete] = createSignal(false);
const [lastSelected, setLastSelected] = createSignal<number>();
const [reverse, setReverse] = createSignal(false);
77
+
const [recreate, setRecreate] = createSignal(false);
78
+
const [openDelete, setOpenDelete] = createSignal(false);
···
const deleteRecords = async () => {
const recsToDel = records.filter((record) => record.toDelete);
112
-
const writes = recsToDel.map((record): $type.enforce<ComAtprotoRepoApplyWrites.Delete> => {
116
+
| $type.enforce<ComAtprotoRepoApplyWrites.Delete>
117
+
| $type.enforce<ComAtprotoRepoApplyWrites.Create>
119
+
recsToDel.forEach((record) => {
$type: "com.atproto.repo.applyWrites#delete",
collection: params.collection as `${string}.${string}.${string}`,
127
+
$type: "com.atproto.repo.applyWrites#create",
128
+
collection: params.collection as `${string}.${string}.${string}`,
130
+
value: record.record.value,
···
130
-
setNotif({ show: true, icon: "lucide--trash-2", text: `${recsToDel.length} records deleted` });
147
+
icon: "lucide--trash-2",
148
+
text: `${recsToDel.length} records ${recreate() ? "recreated" : "deleted"}`,
153
+
setOpenDelete(false);
154
+
setRecreate(false);
···
201
-
<button onclick={() => deleteRecords()} class="flex items-center">
225
+
setOpenDelete(true);
227
+
class="flex items-center"
229
+
<span class="iconify lucide--recycle text-lg text-green-500 dark:text-green-400"></span>
238
+
setRecreate(false);
239
+
setOpenDelete(true);
241
+
class="flex items-center"
<span class="iconify lucide--trash-2 text-lg text-red-500 dark:text-red-400"></span>
249
+
<Modal open={openDelete()} onClose={() => setOpenDelete(false)}>
250
+
<div class="dark:bg-dark-300 dark:shadow-dark-800 absolute top-70 left-[50%] -translate-x-1/2 rounded-lg border-[0.5px] border-neutral-300 bg-neutral-50 p-4 shadow-md transition-opacity duration-300 dark:border-neutral-700 starting:opacity-0">
251
+
<h2 class="mb-2 font-semibold">
252
+
{recreate() ? "Recreate" : "Delete"} {records.filter((r) => r.toDelete).length}{" "}
255
+
<div class="flex justify-end gap-2">
256
+
<Button onClick={() => setOpenDelete(false)}>Cancel</Button>
258
+
onClick={deleteRecords}
259
+
class={`dark:shadow-dark-800 rounded-lg px-2 py-1.5 text-xs font-semibold text-neutral-200 shadow-xs ${recreate() ? "bg-green-500 hover:bg-green-400 dark:bg-green-600 dark:hover:bg-green-500" : "bg-red-500 hover:bg-red-400 active:bg-red-400"}`}
261
+
{recreate() ? "Recreate" : "Delete"}
<Tooltip text="Jetstream">