UNPKG

@ou-imdt/utils

Version:

Utility library for interactive media development

33 lines (29 loc) 1.26 kB
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'); } }