Changed data contexts to use useCallback and fixed performance issues when changing party state

This commit is contained in:
Mitchell McCaffrey
2021-01-22 14:59:05 +11:00
parent b443cdcf09
commit 3abf9c62fa
4 changed files with 341 additions and 237 deletions
+16 -5
View File
@@ -4,13 +4,24 @@ import { getDatabase } from "../database";
// Worker to load large amounts of database data on a separate thread
let obj = {
data: [],
async loadData(table) {
this.data = [];
data: null,
/**
* Load either a whole table or individual item from the DB
* @param {string} table Table to load from
* @param {string|undefined} key Optional database key to load, if undefined whole table will be loaded
*/
async loadData(table, key) {
try {
let db = getDatabase({});
// Use a cursor instead of toArray to prevent IPC max size error
await db.table(table).each((map) => this.data.push(map));
if (key) {
// Load specific item
this.data = await db.table(table).get(key);
} else {
// Load entire table
this.data = [];
// Use a cursor instead of toArray to prevent IPC max size error
await db.table(table).each((item) => this.data.push(item));
}
} catch {}
},
};