mirror of
https://github.com/rommapp/romm.git
synced 2026-06-28 14:56:01 +00:00
create store name onupgradeneeded
This commit is contained in:
@@ -34,10 +34,15 @@ interface DiffMonitor {
|
||||
off: (event: EventType, listener: EventsListener | ErrorsListener) => void;
|
||||
}
|
||||
|
||||
export default async function createIndexedDBDiffMonitor(
|
||||
dbName: string,
|
||||
intervalMs: number = 1000,
|
||||
): Promise<DiffMonitor> {
|
||||
export default async function createIndexedDBDiffMonitor({
|
||||
dbName,
|
||||
storeName,
|
||||
intervalMs = 1000,
|
||||
}: {
|
||||
dbName: string;
|
||||
storeName?: string;
|
||||
intervalMs?: number;
|
||||
}): Promise<DiffMonitor> {
|
||||
let lastSnapshot: DBSnapshot | null = null;
|
||||
let changes: Change[] = [];
|
||||
let intervalId: number | null = null;
|
||||
@@ -87,10 +92,10 @@ export default async function createIndexedDBDiffMonitor(
|
||||
};
|
||||
|
||||
try {
|
||||
for (const storeName of Array.from(db.objectStoreNames)) {
|
||||
const tx = db.transaction(storeName, "readonly");
|
||||
const store = tx.objectStore(storeName);
|
||||
snapshot.stores[storeName] = await getAllFromStore(store);
|
||||
for (const sn of Array.from(db.objectStoreNames)) {
|
||||
const tx = db.transaction(sn, "readonly");
|
||||
const store = tx.objectStore(sn);
|
||||
snapshot.stores[sn] = await getAllFromStore(store);
|
||||
}
|
||||
|
||||
db.close();
|
||||
@@ -99,6 +104,14 @@ export default async function createIndexedDBDiffMonitor(
|
||||
reject(error);
|
||||
}
|
||||
};
|
||||
request.onupgradeneeded = () => {
|
||||
if (!storeName) return;
|
||||
|
||||
const db = request.result;
|
||||
if (!db.objectStoreNames.contains(storeName)) {
|
||||
db.createObjectStore(storeName);
|
||||
}
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -225,11 +225,15 @@ window.EJS_onGameStart = async () => {
|
||||
};
|
||||
}, 10);
|
||||
|
||||
const savesMonitor = await createIndexedDBDiffMonitor("/data/saves", 2000);
|
||||
const statesMonitor = await createIndexedDBDiffMonitor(
|
||||
"EmulatorJS-states",
|
||||
2000,
|
||||
);
|
||||
const savesMonitor = await createIndexedDBDiffMonitor({
|
||||
dbName: "/data/saves",
|
||||
intervalMs: 2000,
|
||||
});
|
||||
const statesMonitor = await createIndexedDBDiffMonitor({
|
||||
dbName: "EmulatorJS-states",
|
||||
storeName: "states",
|
||||
intervalMs: 2000,
|
||||
});
|
||||
|
||||
// Start monitoring
|
||||
savesMonitor.start();
|
||||
|
||||
Reference in New Issue
Block a user