Files
freno-dev/src/components/blog/DeletePostButton.tsx
2026-05-28 20:22:30 -04:00

43 lines
1.1 KiB
TypeScript

import { createSignal } from "solid-js";
import { api } from "~/lib/api";
import TrashIcon from "~/components/icons/TrashIcon";
import Button from "~/components/ui/Button";
export interface DeletePostButtonProps {
type: string;
postID: number;
}
export default function DeletePostButton(props: DeletePostButtonProps) {
const [loading, setLoading] = createSignal(false);
const deletePostTrigger = async (e: Event) => {
e.preventDefault();
const affirm = window.confirm("Are you sure you want to delete?");
if (affirm) {
setLoading(true);
try {
await api.database.deletePost.mutate({ id: props.postID });
window.location.reload();
} catch (error) {
console.error("Failed to delete post:", error);
alert("Failed to delete post");
setLoading(false);
}
}
};
return (
<form onSubmit={deletePostTrigger} class="flex w-full justify-end">
<Button
type="submit"
variant="ghost"
loading={loading()}
class="hover:cursor-pointer"
>
<TrashIcon height={24} width={24} strokeWidth={1.5} />
</Button>
</form>
);
}