Impl loadStorageFromFile

This commit is contained in:
porink0424
2024-02-16 10:59:53 +09:00
parent 68f1259992
commit 9ad0aee5a4
+23
View File
@@ -0,0 +1,23 @@
import { SetterOrUpdater } from "recoil";
import { loadJournalStorage } from "./journalStorage";
import { loadSQLite3Storage } from "./sqlite3";
export const loadStorageFromFile = (
file: File,
setStudies: SetterOrUpdater<Study[]>,
): void => {
const r = new FileReader();
r.addEventListener("load", () => {
const arrayBuffer = r.result as ArrayBuffer | null;
if (arrayBuffer !== null) {
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);
}
}
});
r.readAsArrayBuffer(file);
};