|
1 | 1 | "use client"
|
2 | 2 |
|
3 | 3 | import {Modal, ModalContent, ModalBody, ModalHeader, ModalFooter, Button, Link, Avatar, Divider, Accordion, AccordionItem, Chip, Tooltip, Table, TableHeader, TableColumn, TableRow, TableCell, TableBody } from "@nextui-org/react";
|
4 |
| -import {ParsedScript} from "@/actions/me/scripts"; |
| 4 | +import {deleteScript, ParsedScript} from "@/actions/me/scripts"; |
5 | 5 | import { GoCode, GoPaperAirplane, GoPencil, GoTrash } from "react-icons/go";
|
6 | 6 | import { AuthContext } from "@/contexts/auth";
|
7 |
| -import { useContext, useEffect, useState } from "react"; |
| 7 | +import { useCallback, useContext, useEffect, useState } from "react"; |
8 | 8 | import {TbListDetails} from "react-icons/tb";
|
9 | 9 | import { LiaExpandArrowsAltSolid } from "react-icons/lia";
|
10 | 10 |
|
11 | 11 | interface ScriptModalProps {
|
12 | 12 | className?: string;
|
13 | 13 | script: ParsedScript;
|
14 | 14 | open: boolean; setOpen: React.Dispatch<React.SetStateAction<boolean>>;
|
| 15 | + refresh: () => void; |
15 | 16 | }
|
16 | 17 |
|
17 |
| -const ScriptModal = ({ className, script, open, setOpen }: ScriptModalProps) => { |
| 18 | +const ScriptModal = ({ className, script, open, setOpen, refresh }: ScriptModalProps) => { |
18 | 19 | const {authenticated, me} = useContext(AuthContext);
|
19 | 20 | const [expanded, setExpanded] = useState(false);
|
20 | 21 |
|
| 22 | + const handleDelete = useCallback((script: ParsedScript) => { |
| 23 | + deleteScript(script) |
| 24 | + .then(() => refresh() ) |
| 25 | + .catch((error) => console.error(error)) |
| 26 | + .finally(() => setOpen(false)); |
| 27 | + }, []); |
| 28 | + |
21 | 29 | return (
|
22 | 30 | <Modal
|
23 | 31 | id="script-modal"
|
@@ -97,7 +105,7 @@ const ScriptModal = ({ className, script, open, setOpen }: ScriptModalProps) =>
|
97 | 105 | {authenticated && me?.username === script.owner &&
|
98 | 106 | <>
|
99 | 107 | <Button as={Link} href={`/edit?file=${script.publicURL}&id=${script.id}`} color="primary" className="w-full" startContent={<GoPencil />}>Edit</Button>
|
100 |
| - <Button className="w-full" color="danger" variant="bordered" startContent={<GoTrash />}>Delete</Button> |
| 108 | + <Button className="w-full" color="danger" variant="bordered" startContent={<GoTrash />} onPress={() => handleDelete(script)}>Delete</Button> |
101 | 109 | </>
|
102 | 110 | }
|
103 | 111 | </ModalFooter>
|
|
0 commit comments