From a8cddd5b84c38852686e955cbb8f2641ad758fec Mon Sep 17 00:00:00 2001 From: gen740 Date: Fri, 22 Dec 2023 14:07:56 +0900 Subject: [PATCH] Detect file format by reading header of arrayBuffer --- .../src/components/StorageLoader.tsx | 9 +++---- standalone_app/src/journalStorage.ts | 3 ++- standalone_app/src/sqlite3.ts | 24 +++++++++---------- 3 files changed, 19 insertions(+), 17 deletions(-) diff --git a/standalone_app/src/components/StorageLoader.tsx b/standalone_app/src/components/StorageLoader.tsx index 47a023cc..8c0d20c0 100644 --- a/standalone_app/src/components/StorageLoader.tsx +++ b/standalone_app/src/components/StorageLoader.tsx @@ -30,12 +30,13 @@ export const StorageLoader: FC = () => { const r = new FileReader() r.addEventListener("load", () => { const arrayBuffer = r.result as ArrayBuffer | null - const fileExtension = file.name.split(".").pop() if (arrayBuffer !== null) { - if (fileExtension === "log") { - loadJournalStorage(arrayBuffer, setStudies) - } else { + const header = new Uint8Array(arrayBuffer, 0, 16) + const headerString = new TextDecoder().decode(header) + if (headerString === "SQLite format 3\u0000") { loadSQLite3Storage(arrayBuffer, setStudies) + } else { + loadJournalStorage(arrayBuffer, setStudies) } } }) diff --git a/standalone_app/src/journalStorage.ts b/standalone_app/src/journalStorage.ts index 6a252999..994ee21b 100644 --- a/standalone_app/src/journalStorage.ts +++ b/standalone_app/src/journalStorage.ts @@ -376,5 +376,6 @@ export const loadJournalStorage = ( } } - setter((prev) => [...prev, ...journalStorage.getStudies()]) + const studies = journalStorage.getStudies() + setter((prev) => [...prev, ...studies]) } diff --git a/standalone_app/src/sqlite3.ts b/standalone_app/src/sqlite3.ts index d01a7e52..a0bf018b 100644 --- a/standalone_app/src/sqlite3.ts +++ b/standalone_app/src/sqlite3.ts @@ -174,12 +174,12 @@ const getTrials = ( vals[2] === "COMPLETE" ? "Complete" : vals[2] === "PRUNED" - ? "Pruned" - : vals[2] === "RUNNING" - ? "Running" - : vals[2] === "WAITING" - ? "Waiting" - : "Fail" + ? "Pruned" + : vals[2] === "RUNNING" + ? "Running" + : vals[2] === "WAITING" + ? "Waiting" + : "Fail" const trial: Trial = { trial_id: trialId, number: vals[1], @@ -220,8 +220,8 @@ const getTrialValues = ( vals[1] === "INF_NEG" ? "-inf" : vals[1] === "INF_POS" - ? "+inf" - : vals[0] + ? "+inf" + : vals[0] ) }, }) @@ -391,10 +391,10 @@ const getTrialIntermediateValues = ( vals[2] === "INF_NEG" ? "-inf" : vals[2] === "INF_POS" - ? "+inf" - : vals[2] === "NAN" - ? "nan" - : vals[1], + ? "+inf" + : vals[2] === "NAN" + ? "nan" + : vals[1], }) }, })