Switch to IndexedDB

feature/gui
Alinson S. Xavier 4 years ago
parent 096d95a1aa
commit 02a81e5fdd
No known key found for this signature in database
GPG Key ID: DCA0DAD4D2F58624

@ -12,6 +12,7 @@
"@testing-library/user-event": "^13.5.0", "@testing-library/user-event": "^13.5.0",
"d3": "^7.3.0", "d3": "^7.3.0",
"dagre": "^0.8.5", "dagre": "^0.8.5",
"idb": "^6.1.5",
"react": "^17.0.2", "react": "^17.0.2",
"react-dom": "^17.0.2", "react-dom": "^17.0.2",
"react-flow-renderer": "^9.7.4", "react-flow-renderer": "^9.7.4",

@ -14,6 +14,7 @@
"@testing-library/user-event": "^13.5.0", "@testing-library/user-event": "^13.5.0",
"d3": "^7.3.0", "d3": "^7.3.0",
"dagre": "^0.8.5", "dagre": "^0.8.5",
"idb": "^6.1.5",
"react": "^17.0.2", "react": "^17.0.2",
"react-dom": "^17.0.2", "react-dom": "^17.0.2",
"react-flow-renderer": "^9.7.4", "react-flow-renderer": "^9.7.4",
@ -44,4 +45,4 @@
"last 1 safari version" "last 1 safari version"
] ]
} }
} }

@ -1,4 +1,5 @@
import React, { useState, useRef } from "react"; import React, { useState, useRef, useEffect } from "react";
import { openDB, deleteDB, wrap, unwrap } from "idb";
import "./index.css"; import "./index.css";
import PipelineBlock from "./PipelineBlock"; import PipelineBlock from "./PipelineBlock";
@ -56,18 +57,30 @@ const fixLists = (dict, blacklist, stringify) => {
} }
}; };
const openRelogDB = async () => {
const dbPromise = await openDB("RELOG", 1, {
upgrade(db) {
db.createObjectStore("casebuilder");
},
});
return dbPromise;
};
const InputPage = () => { const InputPage = () => {
const fileElem = useRef(); const fileElem = useRef();
let [data, setData] = useState(defaultData);
let savedData = JSON.parse(localStorage.getItem("data")); const save = async (data) => {
if (!savedData) savedData = defaultData; const db = await openRelogDB();
await db.put("casebuilder", data, "data");
let [data, setData] = useState(savedData);
const save = (data) => {
localStorage.setItem("data", JSON.stringify(data));
}; };
useEffect(async () => {
const db = await openRelogDB();
const data = await db.get("casebuilder", "data");
if (data) setData(data);
}, []);
const promptName = (prevData) => { const promptName = (prevData) => {
const name = prompt("Name"); const name = prompt("Name");
if (!name || name.length === 0) return; if (!name || name.length === 0) return;

Loading…
Cancel
Save