function newStorageUtils(uniqueKey) { //log('newStorageUtils: enter'); //log('newStorageUtils: uniqueKey=' + uniqueKey); var utils = {}; utils.storageKey = uniqueKey; utils.count = function count() { //log('newStorageUtils.utils.count: enter'); //log('newStorageUtils.utils.count: storageKey=' + utils.storageKey); const ids = utils.getIds(); const arrayLen = ids.length; //log('newStorageUtils.utils.count: arrayLen=' + arrayLen); //log('newStorageUtils.utils.count: leave'); return arrayLen; }; utils.clear = function clear() { //log('newStorageUtils.utils.clear: enter'); //log('newStorageUtils.utils.clear: storageKey=' + utils.storageKey); var ids = []; const idsStr = JSON.stringify(ids); localStorage.setItem(utils.storageKey, idsStr); //log('newStorageUtils.utils.clear: leave'); } utils.getIds = function getIds() { //log('newStorageUtils.utils.getIds: enter'); //log('newStorageUtils.utils.getIds: storageKey=' + utils.storageKey); var ids = []; var idsStr = localStorage.getItem(utils.storageKey); if (idsStr !== null) { // if we have a string stored ids = JSON.parse(idsStr); // deserialize it } //log('newStorageUtils.utils.getIds: leave'); return ids; }; utils.isFlagSet = function isFlagSet(id) { //log('newStorageUtils.utils.isFlagSet: enter'); //log('newStorageUtils.utils.isFlagSet: storageKey=' + utils.storageKey); var flag = false; const ids = utils.getIds(); const count = ids.length; if (count > 0) { const where = ids.indexOf(id); flag = (where >= 0); } //log('newStorageUtils.utils.isFlagSet: flag=' + flag); //log('newStorageUtils.utils.isFlagSet: leave'); return flag; }; utils.addToIds = function addToIds(id) { log('newStorageUtils.utils.addToIds: enter'); log('newStorageUtils.utils.addToIds: id=' + id); log('newStorageUtils.utils.addToIds: storageKey=' + utils.storageKey); const alreadyThere = utils.isFlagSet(id); // is the id already in the list? log('newStorageUtils.utils.addToIds: alreadyThere=' + alreadyThere); if (alreadyThere) { // if the id is already in the list log('newStorageUtils.utils.addToIds: the id is already in the list, so we will leave without adding it again'); log('newStorageUtils.utils.addToIds: leave'); return; } var ids = utils.getIds(); const newCount = ids.push(id); const idsStr = JSON.stringify(ids); // serialize it localStorage.setItem(utils.storageKey, idsStr); log('newStorageUtils.utils.addToIds: leave'); }; utils.removeFromIds = function removeFromIds(id) { //log('newStorageUtils.utils.removeFromIds: enter'); //log('newStorageUtils.utils.removeFromIds: id=' + id); //log('newStorageUtils.utils.removeFromIds: storageKey=' + utils.storageKey); var ids = utils.getIds(); const oldCount = ids.length; if (oldCount > 0) { // if it might be in the list const where = ids.indexOf(id); if (where > -1) { ids.splice(where, 1); const serialized = JSON.stringify(ids); localStorage.setItem(utils.storageKey, serialized); } } //log('newStorageUtils.utils.removeFromIds: leave'); }; //log('newStorageUtils.newStorageUtils: leave'); return utils; }