41 lines
1.0 KiB
TypeScript
41 lines
1.0 KiB
TypeScript
"use client";
|
|
|
|
import { useTransition } from "react";
|
|
import { Loader2, BellRing } from "lucide-react";
|
|
import { toast } from "sonner";
|
|
|
|
import { Button } from "@/components/ui/button";
|
|
import { triggerAlertAction } from "./actions";
|
|
|
|
export function AlertButton({
|
|
assignmentId,
|
|
}: {
|
|
assignmentId: string;
|
|
}) {
|
|
const [isPending, startTransition] = useTransition();
|
|
|
|
const handleAlert = () => {
|
|
if (!confirm("Bist du sicher? Dies löst den Notdienst-Alarm aus.")) return;
|
|
|
|
startTransition(async () => {
|
|
const result = await triggerAlertAction(assignmentId);
|
|
if ("error" in result && result.error) {
|
|
toast.error(result.error);
|
|
} else {
|
|
toast.success("Alarm erfolgreich ausgelöst. E-Mail wurde versendet.");
|
|
}
|
|
});
|
|
};
|
|
|
|
return (
|
|
<Button variant="destructive" onClick={handleAlert} disabled={isPending}>
|
|
{isPending ? (
|
|
<Loader2 className="mr-2 h-4 w-4 animate-spin" />
|
|
) : (
|
|
<BellRing className="mr-2 h-4 w-4" />
|
|
)}
|
|
Alarm auslösen
|
|
</Button>
|
|
);
|
|
}
|