fix(site): confirm before deleting a single network monitor (#2467)

This commit is contained in:
Sven van Ginkel
2026-09-29 00:01:10 +02:00
committed by GitHub
parent 666529e073
commit be3dad7ed4

View File

@@ -99,7 +99,7 @@ export default function NetworkMonitorsTableNew({
const [rowSelection, setRowSelection] = useState<RowSelectionState>({}) const [rowSelection, setRowSelection] = useState<RowSelectionState>({})
const [globalFilter, setGlobalFilter] = useState("") const [globalFilter, setGlobalFilter] = useState("")
const [deleteOpen, setDeleteOpen] = useState(false) const [deleteOpen, setDeleteOpen] = useState(false)
const [pendingDeleteIds, setPendingDeleteIds] = useState<string[]>([]) const [pendingDelete, setPendingDelete] = useState<NetworkMonitorRecord[]>([])
const [editingMonitor, setEditingMonitor] = useState<NetworkMonitorRecord>() const [editingMonitor, setEditingMonitor] = useState<NetworkMonitorRecord>()
const { toast } = useToast() const { toast } = useToast()
@@ -197,41 +197,28 @@ export default function NetworkMonitorsTableNew({
[] []
) )
const handleDeleteRequest = useCallback( const handleDeleteRequest = useCallback((monitorsToDelete: NetworkMonitorRecord[]) => {
async (monitorsToDelete: NetworkMonitorRecord[]) => { if (!monitorsToDelete.length) {
if (!monitorsToDelete.length) { return
return }
} setPendingDelete(monitorsToDelete)
setDeleteOpen(true)
}, [])
const ids = monitorsToDelete.map((monitor) => monitor.id) const handleConfirmDelete = async () => {
if (ids.length === 1) {
try {
await pb.collection("network_monitors").delete(ids[0])
} catch (err: unknown) {
toast({
variant: "destructive",
title: t`Error`,
description: (err as Error)?.message || t`Failed to delete monitors.`,
})
}
return
}
setPendingDeleteIds(ids)
setDeleteOpen(true)
},
[toast]
)
const handleBulkDelete = async () => {
setDeleteOpen(false) setDeleteOpen(false)
if (!pendingDeleteIds.length) { const ids = pendingDelete.map((monitor) => monitor.id)
if (!ids.length) {
return return
} }
try { try {
await runMonitorBatch(pendingDeleteIds, (batch, id) => batch.collection("network_monitors").delete(id)) if (ids.length === 1) {
setPendingDeleteIds([]) await pb.collection("network_monitors").delete(ids[0])
} else {
await runMonitorBatch(ids, (batch, id) => batch.collection("network_monitors").delete(id))
}
setPendingDelete([])
setRowSelection({}) setRowSelection({})
} catch (err: unknown) { } catch (err: unknown) {
toast({ toast({
@@ -446,7 +433,7 @@ export default function NetworkMonitorsTableNew({
onOpenChange={(open) => { onOpenChange={(open) => {
setDeleteOpen(open) setDeleteOpen(open)
if (!open) { if (!open) {
setPendingDeleteIds([]) setPendingDelete([])
} }
}} }}
> >
@@ -465,7 +452,7 @@ export default function NetworkMonitorsTableNew({
</AlertDialogCancel> </AlertDialogCancel>
<AlertDialogAction <AlertDialogAction
className={cn(buttonVariants({ variant: "destructive" }))} className={cn(buttonVariants({ variant: "destructive" }))}
onClick={handleBulkDelete} onClick={handleConfirmDelete}
> >
<Trans>Continue</Trans> <Trans>Continue</Trans>
</AlertDialogAction> </AlertDialogAction>