@ou-imdt/utils
Version:
Utility library for interactive media development
33 lines (29 loc) • 1.26 kB
JavaScript
import isLocalAvailable from '../isLocalAvailable.js';
import getSavePrefix from './getSavePrefix.js';
/**
* Loads all data from localStorage.
* @param {Object} options - Options for loading all data.
* @param {boolean | string} options.user - User/global, or group identifier.
* @param {string} [options.activityId] - Optional activity ID.
* @param {string} [options.documentId] - Optional document ID.
* @param {string} [options.courseId] - Optional course ID.
* @param {string} [options.modName] - Optional mod name.
* @returns {Promise<any>} A promise that resolves with all loaded data, or rejects on error.
*/
export default async function loadAllDevData(options) {
if (!isLocalAvailable()) throw new Error('Local storage is not available');
try {
await new Promise(resolve => setTimeout(resolve, 0)); // add flag to make async?
const prefix = getSavePrefix(options);
const values = [...Array(localStorage.length).keys()].reduce((result, index) => {
const key = localStorage.key(index);
if (key.startsWith(prefix)) {
result[key] = JSON.parse(localStorage.getItem(key));
}
return result;
}, {});
return values;
} catch (err) {
throw new Error('Error loading all data');
}
}