fix: tsc issue

This commit is contained in:
Nicolas Meienberger 2026-03-20 19:15:09 +01:00
parent 91ba889f15
commit 186cb4f01f
5 changed files with 30 additions and 21 deletions

View file

@ -4163,10 +4163,10 @@ export type GetBackupProgressResponses = {
repositoryName: string; repositoryName: string;
seconds_elapsed?: number; seconds_elapsed?: number;
seconds_remaining?: number; seconds_remaining?: number;
percent_done: number; percent_done?: number;
total_files: number; total_files?: number;
files_done?: number; files_done?: number;
total_bytes: number; total_bytes?: number;
bytes_done?: number; bytes_done?: number;
current_files?: Array<string>; current_files?: Array<string>;
} | null; } | null;

View file

@ -19,10 +19,19 @@ export const BackupProgressCard = ({ scheduleShortId, initialProgress }: Props)
refetchInterval: 1000, 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 currentFile = progress?.current_files?.[0] || "";
const fileName = currentFile.split("/").pop() || currentFile; 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; const eta = progress?.seconds_remaining ? formatDuration(progress.seconds_remaining) : null;
return ( return (
@ -43,7 +52,7 @@ export const BackupProgressCard = ({ scheduleShortId, initialProgress }: Props)
<p className="font-medium"> <p className="font-medium">
{progress ? ( {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)
<p className="font-medium"> <p className="font-medium">
{progress ? ( {progress ? (
<> <>
<ByteSize bytes={progress.bytes_done} base={1024} /> <ByteSize bytes={bytes_done} base={1024} />
&nbsp;/&nbsp; &nbsp;/&nbsp;
<ByteSize bytes={progress.total_bytes} base={1024} /> <ByteSize bytes={total_bytes} base={1024} />
</> </>
) : ( ) : (
"—" "—"
@ -66,12 +75,12 @@ export const BackupProgressCard = ({ scheduleShortId, initialProgress }: Props)
</div> </div>
<div> <div>
<p className="text-xs uppercase text-muted-foreground">Elapsed</p> <p className="text-xs uppercase text-muted-foreground">Elapsed</p>
<p className="font-medium">{progress ? formatDuration(progress.seconds_elapsed) : "—"}</p> <p className="font-medium">{progress ? formatDuration(seconds_elapsed) : "—"}</p>
</div> </div>
<div> <div>
<p className="text-xs uppercase text-muted-foreground">Speed</p> <p className="text-xs uppercase text-muted-foreground">Speed</p>
<p className="font-medium"> <p className="font-medium">
{progress ? (progress.seconds_elapsed > 0 ? `${speed?.text} ${speed?.unit}/s` : "Calculating...") : "—"} {progress ? (seconds_elapsed > 0 ? `${speed?.text} ${speed?.unit}/s` : "Calculating...") : "—"}
</p> </p>
</div> </div>
<div> <div>

View file

@ -27,12 +27,12 @@ const dumpStartedEventSchema = z.object({
}); });
const restoreProgressMetricsSchema = z.object({ const restoreProgressMetricsSchema = z.object({
seconds_elapsed: z.number(), seconds_elapsed: z.number().default(0),
percent_done: z.number(), percent_done: z.number().default(0),
total_files: z.number(), total_files: z.number().default(0),
files_restored: z.number(), files_restored: z.number().default(0),
total_bytes: z.number(), total_bytes: z.number().default(0),
bytes_restored: z.number(), bytes_restored: z.number().default(0),
}); });
export const backupStartedEventSchema = backupEventBaseSchema; export const backupStartedEventSchema = backupEventBaseSchema;

View file

@ -14,9 +14,9 @@ import type { ResticDeps } from "../types";
const restoreProgressSchema = z.object({ const restoreProgressSchema = z.object({
message_type: z.enum(["status", "summary"]), message_type: z.enum(["status", "summary"]),
seconds_elapsed: z.number(), seconds_elapsed: z.number().default(0),
percent_done: 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), files_restored: z.number().default(0),
total_bytes: z.number().default(0), total_bytes: z.number().default(0),
bytes_restored: z.number().default(0), bytes_restored: z.number().default(0),

View file

@ -32,10 +32,10 @@ export const resticBackupOutputSchema = resticBackupRunSummarySchema.extend({
export const resticBackupProgressMetricsSchema = z.object({ export const resticBackupProgressMetricsSchema = z.object({
seconds_elapsed: z.number().default(0), seconds_elapsed: z.number().default(0),
seconds_remaining: z.number().default(0), seconds_remaining: z.number().default(0),
percent_done: z.number(), percent_done: z.number().default(0),
total_files: z.number(), total_files: z.number().default(0),
files_done: 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), bytes_done: z.number().default(0),
current_files: z.array(z.string()).default([]), current_files: z.array(z.string()).default([]),
}); });