show disk space reclaimed by media sync (#24189)

This commit is contained in:
Josh Hawkins
2026-09-12 07:30:04 -06:00
committed by Nicolas Mowen
parent d6b93301e2
commit 6d33b31bc6
6 changed files with 112 additions and 8 deletions
+3
View File
@@ -131,6 +131,7 @@ export type MediaSyncStats = {
files_checked: number;
orphans_found: number;
orphans_deleted: number;
bytes_reclaimed: number;
aborted: boolean;
error: string | null;
};
@@ -139,6 +140,7 @@ export type MediaSyncTotals = {
files_checked: number;
orphans_found: number;
orphans_deleted: number;
bytes_reclaimed: number;
};
export type MediaSyncResults = {
@@ -154,4 +156,5 @@ export type Job<TResults = unknown> = {
start_time?: number;
end_time?: number;
error_message?: string;
dry_run?: boolean;
};
+8
View File
@@ -5,3 +5,11 @@ export const getUnitSize = (MB: number) => {
return `${(MB / 1048576).toFixed(2)} TiB`;
};
export const getUnitSizeFromBytes = (bytes: number) => {
if (bytes === null || isNaN(bytes) || bytes < 0) return "Invalid number";
if (bytes < 1024) return `${bytes} B`;
if (bytes < 1048576) return `${(bytes / 1024).toFixed(2)} KiB`;
return getUnitSize(bytes / 1048576);
};
@@ -15,6 +15,7 @@ import { formatUnixTimestampToDateTime } from "@/utils/dateUtil";
import { MediaSyncResults, MediaSyncStats } from "@/types/ws";
import { useDocDomain } from "@/hooks/use-doc-domain";
import { Link } from "react-router-dom";
import { getUnitSizeFromBytes } from "@/utils/storageUtil";
export default function MediaSyncSettingsView() {
const { t } = useTranslation("views/settings");
@@ -376,6 +377,22 @@ export default function MediaSyncSettingsView() {
{mediaStats.orphans_deleted}
</span>
</div>
<div className="flex justify-between">
<span className="text-muted-foreground">
{currentJob?.dry_run
? t(
"maintenance.sync.resultsFields.spaceToReclaim",
)
: t(
"maintenance.sync.resultsFields.spaceReclaimed",
)}
</span>
<span>
{getUnitSizeFromBytes(
mediaStats.bytes_reclaimed,
)}
</span>
</div>
{mediaStats.aborted && (
<div className="flex items-center gap-2 text-destructive">
<LuX className="size-4" />
@@ -449,6 +466,22 @@ export default function MediaSyncSettingsView() {
{mediaSyncResults.totals.orphans_deleted}
</span>
</div>
<div className="flex justify-between">
<span className="text-muted-foreground">
{currentJob?.dry_run
? t(
"maintenance.sync.resultsFields.spaceToReclaim",
)
: t(
"maintenance.sync.resultsFields.spaceReclaimed",
)}
</span>
<span className="font-medium">
{getUnitSizeFromBytes(
mediaSyncResults.totals.bytes_reclaimed,
)}
</span>
</div>
</div>
</div>
)}