Prüfung / Lint, Typen, Tests (push) Canceled after 0s
Prüfung / Images bauen (pdf) (push) Canceled after 0s
Prüfung / Images bauen (web) (push) Canceled after 0s
Prüfung / Images bauen (worker) (push) Canceled after 0s
Images / bauen (pdf, docker/pdf.Dockerfile) (push) Canceled after 0s
Images / bauen (web, docker/web.Dockerfile) (push) Canceled after 0s
Images / bauen (worker, docker/worker.Dockerfile) (push) Canceled after 0s
375 Vorkommen in 210 Dateien. Betrifft Kommentare, Oberflaechentexte und die README; an keiner Stelle Bedeutung, nur Zeichensetzung.
45 lines
1.1 KiB
TypeScript
45 lines
1.1 KiB
TypeScript
'use client'
|
|
|
|
import { useState, useTransition } from 'react'
|
|
import { watchText } from '@/lib/i18n/shell'
|
|
import { toggleWatchAction } from '../actions'
|
|
|
|
/**
|
|
* Akte beobachten.
|
|
*
|
|
* Sofortiges Umschalten, der Server bestätigt nur - misslingt es, springt der
|
|
* Zustand zurück. Beobachten ist umkehrbar und harmlos, dafür braucht es
|
|
* keinen Wartezustand. Siehe docs/09-performance-und-ux.md.
|
|
*/
|
|
export function WatchToggle({
|
|
caseNumber,
|
|
initial,
|
|
}: {
|
|
caseNumber: string
|
|
initial: boolean
|
|
}) {
|
|
const [aktiv, setAktiv] = useState(initial)
|
|
const [pending, startTransition] = useTransition()
|
|
|
|
return (
|
|
<button
|
|
type="button"
|
|
disabled={pending}
|
|
title={watchText.hint}
|
|
onClick={() =>
|
|
startTransition(async () => {
|
|
const vorher = aktiv
|
|
setAktiv(!vorher)
|
|
const ergebnis = await toggleWatchAction({ caseNumber })
|
|
if (!ergebnis.ok) setAktiv(vorher)
|
|
else setAktiv(ergebnis.watching)
|
|
})
|
|
}
|
|
aria-pressed={aktiv}
|
|
className="btn btn-sm"
|
|
>
|
|
{aktiv ? watchText.unwatch : watchText.watch}
|
|
</button>
|
|
)
|
|
}
|