Replace native confirms with dialogs

This commit is contained in:
t.indorf
2026-05-20 23:48:40 +02:00
parent 1c5d2f10ac
commit 89364e9011
4 changed files with 159 additions and 21 deletions
+22 -11
View File
@@ -1,10 +1,11 @@
"use client";
import { useTransition } from "react";
import { useState, useTransition } from "react";
import { Loader2, BellRing } from "lucide-react";
import { toast } from "sonner";
import { Button } from "@/components/ui/button";
import { ConfirmDialog } from "@/components/ui/confirm-dialog";
import { triggerAlertAction } from "./actions";
export function AlertButton({
@@ -12,11 +13,10 @@ export function AlertButton({
}: {
assignmentId: string;
}) {
const [confirmOpen, setConfirmOpen] = useState(false);
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) {
@@ -28,13 +28,24 @@ export function AlertButton({
};
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>
<ConfirmDialog
open={confirmOpen}
onOpenChange={setConfirmOpen}
title="Notdienst-Alarm auslösen?"
description="Der Alarm informiert die hinterlegten Kontakte per E-Mail über den Notdienst."
confirmLabel="Alarm auslösen"
pendingLabel="Alarm wird ausgelöst..."
isPending={isPending}
onConfirm={handleAlert}
>
<Button variant="destructive" 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>
</ConfirmDialog>
);
}