diff --git a/src/Manager.tsx b/src/Manager.tsx index 248f2fc..849848f 100644 --- a/src/Manager.tsx +++ b/src/Manager.tsx @@ -215,8 +215,9 @@ const [fileSystem, setFileSystem] = useMemo(() => { }; useEffect(() => { + if(!myAddress?.address) return const fetchFileSystem = async () => { - const data = await getFileSystemQManagerFromDB(); + const data = await getFileSystemQManagerFromDB(myAddress?.address); if (data?.private && data?.public){ setFileSystemPublic(data?.public) setFileSystemPrivate(data?.private) @@ -229,13 +230,13 @@ const [fileSystem, setFileSystem] = useMemo(() => { } }; fetchFileSystem(); - }, []); + }, [myAddress?.address]); useEffect(() => { - if (fileSystemPublic && fileSystemPrivate) { - saveFileSystemQManagerToDB({public: fileSystemPublic, private: fileSystemPrivate, group: fileSystemGroup}); + if (fileSystemPublic && fileSystemPrivate && myAddress?.address) { + saveFileSystemQManagerToDB({public: fileSystemPublic, private: fileSystemPrivate, group: fileSystemGroup}, myAddress?.address); } - }, [fileSystemPublic , fileSystemPrivate, fileSystemGroup]); + }, [fileSystemPublic , fileSystemPrivate, fileSystemGroup, myAddress?.address]); const addDirectoryToCurrent = (directoryName) => { if (!directoryName || currentPath.length === 0) return false; diff --git a/src/storage.ts b/src/storage.ts index f916a70..d3a4cf0 100644 --- a/src/storage.ts +++ b/src/storage.ts @@ -1,35 +1,33 @@ const initializeDB = () => { - return new Promise((resolve, reject) => { - const request = indexedDB.open("FileSystemDB", 1); - - request.onupgradeneeded = (event) => { - const db = event.target.result; - if (!db.objectStoreNames.contains("fileSystemQManager")) { - db.createObjectStore("fileSystemQManager", { keyPath: "id" }); // `id` will be used as the key - } - }; - - request.onsuccess = () => resolve(request.result); - request.onerror = (event) => reject(event.target.error); - }); - }; - + return new Promise((resolve, reject) => { + const request = indexedDB.open("FileSystemDB", 1); + + request.onupgradeneeded = (event) => { + const db = event.target.result; + if (!db.objectStoreNames.contains("fileSystemQManager")) { + // Create object store with `address` as the keyPath + db.createObjectStore("fileSystemQManager", { keyPath: "address" }); + } + }; + + request.onsuccess = () => resolve(request.result); + request.onerror = (event) => reject(event.target.error); + }); +}; + - export const saveFileSystemQManagerToDB = async (fileSystemQManager) => { + export const saveFileSystemQManagerToDB = async ( fileSystemQManager, address) => { try { const db = await initializeDB(); const transaction = db.transaction("fileSystemQManager", "readwrite"); const store = transaction.objectStore("fileSystemQManager"); - // Clear existing data - store.clear(); - - // Save new data - store.put({ id: 1, data: fileSystemQManager }); + // Save or update data for the specific address + store.put({ address, data: fileSystemQManager }); return new Promise((resolve, reject) => { - transaction.oncomplete = () => resolve("FileSystemQManager saved successfully"); + transaction.oncomplete = () => resolve(`FileSystemQManager for address ${address} saved successfully`); transaction.onerror = (event) => reject(event.target.error); }); } catch (error) { @@ -37,21 +35,20 @@ const initializeDB = () => { } }; - - export const getFileSystemQManagerFromDB = async () => { + export const getFileSystemQManagerFromDB = async (address) => { try { const db = await initializeDB(); const transaction = db.transaction("fileSystemQManager", "readonly"); const store = transaction.objectStore("fileSystemQManager"); return new Promise((resolve, reject) => { - const request = store.get(1); + const request = store.get(address); request.onsuccess = (event) => { if (event.target.result) { resolve(event.target.result.data); } else { - resolve(null); // No data found + resolve(null); // No data found for this address } }; request.onerror = (event) => reject(event.target.error); @@ -60,4 +57,5 @@ const initializeDB = () => { console.error("Error retrieving fileSystemQManager from IndexedDB:", error); } }; + \ No newline at end of file