| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- import { PageNode } from '../components/PageNode';
- export class LsxCacheHelper {
- /**
- * @private
- */
- static retrieveFromSessionStorage() {
- return JSON.parse(sessionStorage.getItem('lsx-cache')) || {};
- }
- /**
- * stringify and save obj
- *
- * @static
- * @param {object} cacheObj
- *
- * @memberOf LsxCacheHelper
- */
- static saveToSessionStorage(cacheObj) {
- sessionStorage.setItem('lsx-cache', JSON.stringify(cacheObj));
- }
- /**
- * generate cache key for storing to storage
- *
- * @static
- * @param {LsxContext} lsxContext
- * @returns
- *
- * @memberOf LsxCacheHelper
- */
- static generateCacheKeyFromContext(lsxContext) {
- return `${lsxContext.fromPagePath}__${lsxContext.lsxArgs}`;
- }
- /**
- *
- *
- * @static
- * @param {string} key
- * @returns
- *
- * @memberOf LsxCacheHelper
- */
- static getStateCache(key) {
- const cacheObj = LsxCacheHelper.retrieveFromSessionStorage();
- const stateCache = cacheObj[key];
- if (stateCache != null && stateCache.nodeTree != null) {
- // instanciate PageNode
- stateCache.nodeTree = stateCache.nodeTree.map((obj) => {
- return PageNode.instanciateFrom(obj);
- });
- }
- return stateCache;
- }
- /**
- * store state object of React Component with specified key
- *
- * @static
- * @param {string} key
- * @param {object} lsxState state object of React Component
- *
- * @memberOf LsxCacheHelper
- */
- static cacheState(key, lsxState) {
- const cacheObj = LsxCacheHelper.retrieveFromSessionStorage();
- cacheObj[key] = lsxState;
- LsxCacheHelper.saveToSessionStorage(cacheObj);
- }
- /**
- * clear all state caches
- *
- * @static
- *
- * @memberOf LsxCacheHelper
- */
- static clearAllStateCaches() {
- LsxCacheHelper.saveToSessionStorage({});
- }
- }
|