mirror of
https://github.com/henrygd/beszel.git
synced 2026-09-29 12:57:50 +02:00
fix(site): confirm before deleting a single network monitor (#2467)
This commit is contained in:
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user