fix(backups): показать отсутствие файлов и защитить удаление записей
This commit is contained in:
1 parent
e452e528e1
commit
6617b776bb
26 files changed
+420
-36
No files matched your search
@@ -44,6 +44,7 @@ import { useBackupJob } from "@/lib/use-backup-job"
|
||||
import { backupJobOutcome, backupJobResultError } from "@/lib/backup-job-poll"
|
||||
import { backupSchedulePayload, backupStoragePayload } from "@/lib/backup-settings"
|
||||
import { BackupsHistory } from "@/components/backups/backups-history"
|
||||
import { backupFileMissing } from "@/lib/backup-file-state"
|
||||
import {
|
||||
BackupsSettings,
|
||||
WEEK_DAYS,
|
||||
@@ -148,6 +149,7 @@ function BackupsContent() {
|
||||
notes: b.notes ?? "",
|
||||
storage: b.storage,
|
||||
uploadError: b.uploadError ?? undefined,
|
||||
localFileStatus: b.localFileStatus,
|
||||
}
|
||||
}, [])
|
||||
|
||||
@@ -304,7 +306,7 @@ function BackupsContent() {
|
||||
if (!deleteTarget) return
|
||||
const target = deleteTarget, abort = startOperation(); if (!abort) return
|
||||
try {
|
||||
await deleteBackup(backendUrl, target.id, { signal: abort.signal })
|
||||
await deleteBackup(backendUrl, target.id, { signal: abort.signal }, backupFileMissing(target))
|
||||
if (!alive.current || abort.signal.aborted) return
|
||||
setBackupList(previous => previous.filter(backup => backup.id !== target.id)); setDeleteTarget(null)
|
||||
toast.success("API подтвердил удаление резервной копии")
|
||||
@@ -314,6 +316,10 @@ function BackupsContent() {
|
||||
}
|
||||
async function handleRestore() {
|
||||
if (!restoreTarget || !restoreTarget.serverId || !restoreGuard.canStart) return
|
||||
if (backupFileMissing(backupList.find(backup => backup.id === restoreTarget.id) ?? restoreTarget)) {
|
||||
setOpError("Локальный файл отсутствует. Создайте новую резервную копию.")
|
||||
return
|
||||
}
|
||||
const target = restoreTarget, abort = startOperation(); if (!abort) return
|
||||
let sent = false
|
||||
try {
|
||||
@@ -607,8 +613,8 @@ function BackupsContent() {
|
||||
returnFocus={returnDialogFocus}
|
||||
backup={restoreTarget}
|
||||
busy={opBusy}
|
||||
blocked={!restoreGuard.canStart}
|
||||
error={opError}
|
||||
blocked={!restoreGuard.canStart || Boolean(restoreTarget && backupFileMissing(backupList.find(backup => backup.id === restoreTarget.id) ?? restoreTarget))}
|
||||
error={restoreTarget && backupFileMissing(backupList.find(backup => backup.id === restoreTarget.id) ?? restoreTarget) ? "Локальный файл отсутствует. Создайте новую резервную копию." : opError}
|
||||
onConfirm={() => void handleRestore()}
|
||||
onCancel={() => setRestoreTarget(null)}
|
||||
/>
|
||||
|
||||
Reference in new issue
Block a user