From 9934846a106494fb19d0b30e809be8f20bf0ac15 Mon Sep 17 00:00:00 2001
From: Elias Wennerlund
Date: Tue, 28 Apr 2026 22:16:15 +0200
Subject: [PATCH 1/2] feat(Media): Enhance media usage display with
human-readable size format
Co-authored-by: Copilot
---
src/app/[locale]/(main-content)/settings/media/page.tsx | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/src/app/[locale]/(main-content)/settings/media/page.tsx b/src/app/[locale]/(main-content)/settings/media/page.tsx
index 8fba8ab5..f2716b90 100644
--- a/src/app/[locale]/(main-content)/settings/media/page.tsx
+++ b/src/app/[locale]/(main-content)/settings/media/page.tsx
@@ -1,6 +1,13 @@
import i18nService from '@/services/i18nService';
import MediaService from '@/services/mediaService';
+function bytesToSize(bytes: number): string {
+ if (bytes === 0) return '0 B';
+ const sizes = ['B', 'KB', 'MB', 'GB', 'TB'];
+ const i = Math.floor(Math.log(bytes) / Math.log(1024));
+ return Math.round(bytes / Math.pow(1024, i)) + ' ' + sizes[i];
+}
+
export default async function Page(props: {
params: Promise<{ locale: string }>;
}) {
@@ -21,7 +28,7 @@ export default async function Page(props: {
{l.settings.media.stored}: {stats.count}
- {l.settings.media.usage}: {stats.size} bytes
+ {l.settings.media.usage}: {bytesToSize(stats.size)}
{l.settings.media.orphaned}: {stats.count - stats.used}
From 9a6ae0e7bddb2a54949b0a1180962df024cffd10 Mon Sep 17 00:00:00 2001
From: Elias Wennerlund
Date: Tue, 28 Apr 2026 22:48:24 +0200
Subject: [PATCH 2/2] refactor(Media): Move bytesToSize function to
MediaService for better organization
---
.../[locale]/(main-content)/settings/media/page.tsx | 9 +--------
src/services/mediaService.ts | 11 +++++++++--
2 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/src/app/[locale]/(main-content)/settings/media/page.tsx b/src/app/[locale]/(main-content)/settings/media/page.tsx
index f2716b90..da83d0da 100644
--- a/src/app/[locale]/(main-content)/settings/media/page.tsx
+++ b/src/app/[locale]/(main-content)/settings/media/page.tsx
@@ -1,13 +1,6 @@
import i18nService from '@/services/i18nService';
import MediaService from '@/services/mediaService';
-function bytesToSize(bytes: number): string {
- if (bytes === 0) return '0 B';
- const sizes = ['B', 'KB', 'MB', 'GB', 'TB'];
- const i = Math.floor(Math.log(bytes) / Math.log(1024));
- return Math.round(bytes / Math.pow(1024, i)) + ' ' + sizes[i];
-}
-
export default async function Page(props: {
params: Promise<{ locale: string }>;
}) {
@@ -28,7 +21,7 @@ export default async function Page(props: {
{l.settings.media.stored}: {stats.count}
- {l.settings.media.usage}: {bytesToSize(stats.size)}
+ {l.settings.media.usage}: {MediaService.bytesToSize(stats.size)}
{l.settings.media.orphaned}: {stats.count - stats.used}
diff --git a/src/services/mediaService.ts b/src/services/mediaService.ts
index cb8b46b6..513e414b 100644
--- a/src/services/mediaService.ts
+++ b/src/services/mediaService.ts
@@ -1,7 +1,7 @@
import prisma from '@/prisma';
-import { stat, readdir, readFile, writeFile } from 'fs/promises';
-import FileService, { MediaType } from './fileService';
import { existsSync } from 'fs';
+import { readdir, readFile, stat, writeFile } from 'fs/promises';
+import FileService, { MediaType } from './fileService';
const mediaPath = process.env.MEDIA_PATH || './media';
@@ -96,4 +96,11 @@ export default class MediaService {
return { count: dir.length, size, used };
}
+
+ static bytesToSize(bytes: number): string {
+ if (bytes === 0) return '0 B';
+ const sizes = ['B', 'KB', 'MB', 'GB', 'TB'];
+ const i = Math.floor(Math.log(bytes) / Math.log(1024));
+ return Math.round(bytes / Math.pow(1024, i)) + ' ' + sizes[i];
+ }
}