Skip to content

Commit 136966a

Browse files
ymCopilot
andauthored
fix(ui): upload file size could not be parsed (#1011)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
1 parent 56968de commit 136966a

File tree

2 files changed

+23
-25
lines changed

2 files changed

+23
-25
lines changed

ui/src/routes/devices.$id.mount.tsx

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -503,6 +503,12 @@ function UrlView({
503503
);
504504
}
505505

506+
export interface StorageFile {
507+
name: string;
508+
size: string;
509+
createdAt: Date;
510+
}
511+
506512
function DeviceFileView({
507513
onMountStorageFile,
508514
mountInProgress,
@@ -514,13 +520,7 @@ function DeviceFileView({
514520
onBack: () => void;
515521
onNewImageClick: (incompleteFileName?: string) => void;
516522
}) {
517-
const [onStorageFiles, setOnStorageFiles] = useState<
518-
{
519-
name: string;
520-
size: string;
521-
createdAt: string;
522-
}[]
523-
>([]);
523+
const [onStorageFiles, setOnStorageFiles] = useState<StorageFile[]>([]);
524524

525525
const [selected, setSelected] = useState<string | null>(null);
526526
const [usbMode, setUsbMode] = useState<RemoteVirtualMediaState["mode"]>("CDROM");
@@ -565,7 +565,7 @@ function DeviceFileView({
565565
const formattedFiles = files.map(file => ({
566566
name: file.filename,
567567
size: formatters.bytes(file.size),
568-
createdAt: formatters.date(new Date(file?.createdAt)),
568+
createdAt: new Date(file?.createdAt),
569569
}));
570570

571571
setOnStorageFiles(formattedFiles);
@@ -582,10 +582,6 @@ function DeviceFileView({
582582
});
583583
}, [send, setOnStorageFiles, setStorageSpace]);
584584

585-
useEffect(() => {
586-
syncStorage();
587-
}, [syncStorage]);
588-
589585
interface StorageFiles {
590586
files: {
591587
filename: string;
@@ -598,7 +594,7 @@ function DeviceFileView({
598594
syncStorage();
599595
}, [syncStorage]);
600596

601-
function handleDeleteFile(file: { name: string; size: string; createdAt: string }) {
597+
function handleDeleteFile(file: StorageFile) {
602598
console.log("Deleting file:", file);
603599
send("deleteStorageFile", { filename: file.name }, (resp: JsonRpcResponse) => {
604600
if ("error" in resp) {
@@ -610,7 +606,7 @@ function DeviceFileView({
610606
});
611607
}
612608

613-
function handleOnSelectFile(file: { name: string; size: string; createdAt: string }) {
609+
function handleOnSelectFile(file: StorageFile) {
614610
setSelected(file.name);
615611
if (file.name.endsWith(".iso")) {
616612
setUsbMode("CDROM");
@@ -1292,7 +1288,7 @@ function PreUploadedImageItem({
12921288
}: {
12931289
name: string;
12941290
size: string;
1295-
uploadedAt: string;
1291+
uploadedAt: Date;
12961292
isSelected: boolean;
12971293
isIncomplete: boolean;
12981294
onSelect: () => void;

ui/src/utils.ts

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
import { KeySequence } from "@hooks/stores";
2-
import { getLocale , locales } from "@localizations/runtime.js";
2+
import { getLocale, locales } from "@localizations/runtime.js";
33
import { m } from "@localizations/messages.js";
44

5+
const isInvalidDate = (date: Date) => date instanceof Date && isNaN(date.getTime());
6+
57
export const formatters = {
68
date: (date: Date, options?: Intl.DateTimeFormatOptions) =>
7-
new Intl.DateTimeFormat(getLocale() || "en-US", {
9+
isInvalidDate(date) ? "Invalid Date" : new Intl.DateTimeFormat(getLocale() || "en-US", {
810
year: "numeric",
911
month: "long",
1012
day: "numeric",
@@ -46,14 +48,14 @@ export const formatters = {
4648
amount: number;
4749
name: Intl.RelativeTimeFormatUnit;
4850
}[] = [
49-
{ amount: 60, name: "seconds" },
50-
{ amount: 60, name: "minutes" },
51-
{ amount: 24, name: "hours" },
52-
{ amount: 7, name: "days" },
53-
{ amount: 4.34524, name: "weeks" },
54-
{ amount: 12, name: "months" },
55-
{ amount: Number.POSITIVE_INFINITY, name: "years" },
56-
];
51+
{ amount: 60, name: "seconds" },
52+
{ amount: 60, name: "minutes" },
53+
{ amount: 24, name: "hours" },
54+
{ amount: 7, name: "days" },
55+
{ amount: 4.34524, name: "weeks" },
56+
{ amount: 12, name: "months" },
57+
{ amount: Number.POSITIVE_INFINITY, name: "years" },
58+
];
5759

5860
let duration = (date.valueOf() - new Date().valueOf()) / 1000;
5961

0 commit comments

Comments
 (0)