From 186cb4f01f84557f3ba314c9d04df7c0bb39e716 Mon Sep 17 00:00:00 2001 From: Nicolas Meienberger Date: Fri, 20 Mar 2026 19:15:09 +0100 Subject: [PATCH] fix: tsc issue --- app/client/api-client/types.gen.ts | 6 ++--- .../components/backup-progress-card.tsx | 23 +++++++++++++------ app/schemas/events-dto.ts | 12 +++++----- packages/core/src/restic/commands/restore.ts | 4 ++-- packages/core/src/restic/restic-dto.ts | 6 ++--- 5 files changed, 30 insertions(+), 21 deletions(-) diff --git a/app/client/api-client/types.gen.ts b/app/client/api-client/types.gen.ts index 8fa02f2d..48cbca56 100644 --- a/app/client/api-client/types.gen.ts +++ b/app/client/api-client/types.gen.ts @@ -4163,10 +4163,10 @@ export type GetBackupProgressResponses = { repositoryName: string; seconds_elapsed?: number; seconds_remaining?: number; - percent_done: number; - total_files: number; + percent_done?: number; + total_files?: number; files_done?: number; - total_bytes: number; + total_bytes?: number; bytes_done?: number; current_files?: Array; } | null; diff --git a/app/client/modules/backups/components/backup-progress-card.tsx b/app/client/modules/backups/components/backup-progress-card.tsx index 0e6f4140..579433f1 100644 --- a/app/client/modules/backups/components/backup-progress-card.tsx +++ b/app/client/modules/backups/components/backup-progress-card.tsx @@ -19,10 +19,19 @@ export const BackupProgressCard = ({ scheduleShortId, initialProgress }: Props) refetchInterval: 1000, }); - const percentDone = progress ? Math.round(progress.percent_done * 100) : 0; + const { + percent_done = 0, + bytes_done = 0, + total_bytes = 0, + seconds_elapsed = 0, + files_done = 0, + total_files = 0, + } = progress ?? {}; + + const percentDone = progress ? Math.round(percent_done * 100) : 0; const currentFile = progress?.current_files?.[0] || ""; const fileName = currentFile.split("/").pop() || currentFile; - const speed = progress ? formatBytes(progress.bytes_done / progress.seconds_elapsed) : null; + const speed = progress ? formatBytes(bytes_done / seconds_elapsed) : null; const eta = progress?.seconds_remaining ? formatDuration(progress.seconds_remaining) : null; return ( @@ -43,7 +52,7 @@ export const BackupProgressCard = ({ scheduleShortId, initialProgress }: Props)

{progress ? ( <> - {progress.files_done.toLocaleString()} / {progress.total_files.toLocaleString()} + {files_done.toLocaleString()} / {total_files.toLocaleString()} ) : ( "—" @@ -55,9 +64,9 @@ export const BackupProgressCard = ({ scheduleShortId, initialProgress }: Props)

{progress ? ( <> - +  /  - + ) : ( "—" @@ -66,12 +75,12 @@ export const BackupProgressCard = ({ scheduleShortId, initialProgress }: Props)

Elapsed

-

{progress ? formatDuration(progress.seconds_elapsed) : "—"}

+

{progress ? formatDuration(seconds_elapsed) : "—"}

Speed

- {progress ? (progress.seconds_elapsed > 0 ? `${speed?.text} ${speed?.unit}/s` : "Calculating...") : "—"} + {progress ? (seconds_elapsed > 0 ? `${speed?.text} ${speed?.unit}/s` : "Calculating...") : "—"}

diff --git a/app/schemas/events-dto.ts b/app/schemas/events-dto.ts index 8edc3385..9acb7ab8 100644 --- a/app/schemas/events-dto.ts +++ b/app/schemas/events-dto.ts @@ -27,12 +27,12 @@ const dumpStartedEventSchema = z.object({ }); const restoreProgressMetricsSchema = z.object({ - seconds_elapsed: z.number(), - percent_done: z.number(), - total_files: z.number(), - files_restored: z.number(), - total_bytes: z.number(), - bytes_restored: z.number(), + seconds_elapsed: z.number().default(0), + percent_done: z.number().default(0), + total_files: z.number().default(0), + files_restored: z.number().default(0), + total_bytes: z.number().default(0), + bytes_restored: z.number().default(0), }); export const backupStartedEventSchema = backupEventBaseSchema; diff --git a/packages/core/src/restic/commands/restore.ts b/packages/core/src/restic/commands/restore.ts index df41d7be..8788f0c1 100644 --- a/packages/core/src/restic/commands/restore.ts +++ b/packages/core/src/restic/commands/restore.ts @@ -14,9 +14,9 @@ import type { ResticDeps } from "../types"; const restoreProgressSchema = z.object({ message_type: z.enum(["status", "summary"]), - seconds_elapsed: z.number(), + seconds_elapsed: z.number().default(0), percent_done: z.number().default(0), - total_files: z.number(), + total_files: z.number().default(0), files_restored: z.number().default(0), total_bytes: z.number().default(0), bytes_restored: z.number().default(0), diff --git a/packages/core/src/restic/restic-dto.ts b/packages/core/src/restic/restic-dto.ts index 702596a8..2d3b36bf 100644 --- a/packages/core/src/restic/restic-dto.ts +++ b/packages/core/src/restic/restic-dto.ts @@ -32,10 +32,10 @@ export const resticBackupOutputSchema = resticBackupRunSummarySchema.extend({ export const resticBackupProgressMetricsSchema = z.object({ seconds_elapsed: z.number().default(0), seconds_remaining: z.number().default(0), - percent_done: z.number(), - total_files: z.number(), + percent_done: z.number().default(0), + total_files: z.number().default(0), files_done: z.number().default(0), - total_bytes: z.number(), + total_bytes: z.number().default(0), bytes_done: z.number().default(0), current_files: z.array(z.string()).default([]), });