increase efficiency
an attempt to clear up the issue when `CLOUD = 0`
This commit is contained in:
parent
137d57a408
commit
78bed4dd0c
1 changed files with 27 additions and 46 deletions
|
@ -2,7 +2,7 @@
|
|||
Manage the local cache.
|
||||
*/
|
||||
|
||||
import logging from "/gui/scripts/logging.JS";
|
||||
import alerts from "/gui/scripts/alerts.js";
|
||||
|
||||
/* Read all stored data in the browser cache.
|
||||
|
||||
|
@ -13,13 +13,10 @@ import logging from "/gui/scripts/logging.JS";
|
|||
*/
|
||||
export async function read(DATA_NAME, CLOUD = 0) {
|
||||
// Initialize the selected pref data.
|
||||
let DATA = {},
|
||||
DATA_ALL = {},
|
||||
DATA_RETURNED = {};
|
||||
let DATA, DATA_RETURNED;
|
||||
|
||||
// Convert the entered prefname to an array if it is not one.
|
||||
if (!(typeof DATA_NAME).includes(`object`)) {
|
||||
// Avoid null
|
||||
if ((!Array.isArray(DATA_NAME)) && DATA_NAME != null) {
|
||||
if ((typeof DATA_NAME).includes(`str`) ? DATA_NAME.trim() : DATA_NAME) {
|
||||
// Syntax of splitting is by commas.
|
||||
DATA_NAME = String(DATA_NAME).trim().split(",");
|
||||
|
@ -27,13 +24,12 @@ export async function read(DATA_NAME, CLOUD = 0) {
|
|||
}
|
||||
|
||||
/*
|
||||
Get all dataset.
|
||||
Get all storage values.
|
||||
|
||||
@param {number} SOURCE the data source
|
||||
*/
|
||||
async function read_database(SOURCE = -1) {
|
||||
let data = {};
|
||||
let data_returned;
|
||||
let data, data_returned;
|
||||
|
||||
async function read_database_local() {
|
||||
return new Promise((resolve, reject) => {
|
||||
|
@ -64,12 +60,7 @@ export async function read(DATA_NAME, CLOUD = 0) {
|
|||
}
|
||||
|
||||
// Return the data.
|
||||
if (SOURCE > 0) {
|
||||
data_returned = read_database_sync();
|
||||
} else {
|
||||
data_returned = read_database_local();
|
||||
}
|
||||
|
||||
data_returned = (SOURCE > 0) ? read_database_sync() : read_database_local();
|
||||
return data_returned;
|
||||
}
|
||||
|
||||
|
@ -83,7 +74,7 @@ export async function read(DATA_NAME, CLOUD = 0) {
|
|||
let DATA = DATA_ALL;
|
||||
|
||||
// Pull the data out.
|
||||
if (DATA_ALL != null && DATA_PATH && DATA_PATH != null ? DATA_PATH.length > 0 : false) {
|
||||
if (DATA_ALL != null && (Array.isArray(DATA_PATH) && DATA_PATH != null) ? DATA_PATH.length > 0 : false) {
|
||||
let DATA_PATH_SELECTED = String(DATA_PATH.shift()).trim();
|
||||
|
||||
// Get the selected data.
|
||||
|
@ -93,48 +84,38 @@ export async function read(DATA_NAME, CLOUD = 0) {
|
|||
if (DATA_PATH.length > 0) {
|
||||
// Recursively run to make use of the existing data.
|
||||
DATA = find_data(DATA, DATA_PATH);
|
||||
}
|
||||
};
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
// Now return the data.
|
||||
return DATA;
|
||||
}
|
||||
|
||||
// Read data from local and sync storage (asynchronous operations)
|
||||
try {
|
||||
if (CLOUD <= 0) {
|
||||
[DATA_ALL[`local`]] = await Promise.all([read_database(-1)]);
|
||||
}
|
||||
if (CLOUD >= 0) {
|
||||
[DATA_ALL[`sync`]] = await Promise.all([read_database(1)]);
|
||||
}
|
||||
} catch ({ name, message }) {
|
||||
logging.error(name, message);
|
||||
}
|
||||
switch (CLOUD) {
|
||||
case 0:
|
||||
DATA = {}; DATA_RETURNED = {};
|
||||
|
||||
// Let's get through everything and then determine which one has…
|
||||
Object.keys(DATA_ALL).forEach((DATA_SOURCE) => {
|
||||
if (DATA_ALL[DATA_SOURCE]) {
|
||||
DATA[DATA_SOURCE] = DATA_NAME
|
||||
? find_data(DATA_ALL[DATA_SOURCE], DATA_NAME)
|
||||
: DATA_ALL[DATA_SOURCE];
|
||||
}
|
||||
});
|
||||
DATA[`sync`] = await read(DATA_NAME, 1);
|
||||
DATA[`local`] = await read(DATA_NAME, -1);
|
||||
|
||||
// Now return the data.
|
||||
DATA_RETURNED[`source`] =
|
||||
CLOUD != 0
|
||||
? CLOUD > 0
|
||||
? `sync`
|
||||
: `local`
|
||||
: (DATA[`sync`] ? DATA[`sync`].length <= 0 : DATA[`sync`])
|
||||
DATA_RETURNED[`source`] = (DATA[`sync`] != null)
|
||||
? `sync`
|
||||
: `local`;
|
||||
DATA_RETURNED[`value`] = DATA[DATA_RETURNED[`source`]];
|
||||
|
||||
return DATA_RETURNED[`value`];
|
||||
break;
|
||||
default:
|
||||
CLOUD = (CLOUD > 0) ? 1 : -1;
|
||||
DATA = await read_database(CLOUD);
|
||||
DATA_RETURNED = (DATA_NAME) ? find_data(DATA, DATA_NAME) : DATA;
|
||||
return(DATA_RETURNED);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* More enhanced searching.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue