Direkt nach dem Einrichten wuesste man sonst erst beim naechsten Takt, ob die Zugangsdaten stimmen. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
47 lines
1.2 KiB
TypeScript
47 lines
1.2 KiB
TypeScript
'use client'
|
|
|
|
import { useTransition } from 'react'
|
|
import { useRouter } from 'next/navigation'
|
|
import { Loader2, RefreshCw } from 'lucide-react'
|
|
import { toast } from 'sonner'
|
|
import { Button } from '@/components/ui/button'
|
|
import { laufAnstossen } from '@/server/aktionen/integrationen'
|
|
|
|
/**
|
|
* Stößt einen Lauf von Hand an.
|
|
*
|
|
* Vor allem direkt nach dem Einrichten: Sonst wüsste man erst beim nächsten
|
|
* Takt, ob die Zugangsdaten stimmen.
|
|
*/
|
|
export function LaufKnopf({ quelle }: { quelle: string }) {
|
|
const router = useRouter()
|
|
const [laeuft, starte] = useTransition()
|
|
|
|
return (
|
|
<Button
|
|
art="umriss"
|
|
disabled={laeuft}
|
|
onClick={() => {
|
|
starte(async () => {
|
|
const daten = new FormData()
|
|
daten.set('quelle', quelle)
|
|
const antwort = await laufAnstossen(daten)
|
|
if (antwort.ok) {
|
|
toast.success(antwort.meldung)
|
|
router.refresh()
|
|
} else {
|
|
toast.error(antwort.fehler)
|
|
}
|
|
})
|
|
}}
|
|
>
|
|
{laeuft ? (
|
|
<Loader2 className="animate-spin" aria-hidden />
|
|
) : (
|
|
<RefreshCw aria-hidden />
|
|
)}
|
|
Jetzt abrufen
|
|
</Button>
|
|
)
|
|
}
|