From 26520860f5b1e87b2ce797f2c5503f11375586b0 Mon Sep 17 00:00:00 2001 From: mikoloism Date: Mon, 1 Aug 2022 00:50:18 +0430 Subject: [PATCH 1/2] refactor (angular-cla.js) : change some ugly switch ... case to objective alternative switch case is ugly and so memory usage but with this concept you can use object and key name as case, make more flexible (i changed soon for new re-usable switch...case) --- src/angular-acl.js | 41 ++++++++++++++++------------------------- 1 file changed, 16 insertions(+), 25 deletions(-) diff --git a/src/angular-acl.js b/src/angular-acl.js index 5f3ea58..0df0454 100644 --- a/src/angular-acl.js +++ b/src/angular-acl.js @@ -58,16 +58,13 @@ angular.module('mm.acl').provider('AclService', [ * Persist data to storage based on config */ var save = function () { - switch (config.storage) { - case 'sessionStorage': - saveToStorage('sessionStorage'); - break; - case 'localStorage': - saveToStorage('localStorage'); - break; - default: - // Don't save - return; + // { case1: value1 }[case1] # => value1 + let storageType = { + sessionStorage: 'sessionStorage', + localStorage : 'localStorage' + }[config.storage]; + + storageType && saveToStorage(storageType); } }; @@ -132,21 +129,15 @@ angular.module('mm.acl').provider('AclService', [ * @returns {boolean} */ function resume() { - var storedData; - - switch (config.storage) { - case 'sessionStorage': - storedData = fetchFromStorage('sessionStorage'); - break; - case 'localStorage': - storedData = fetchFromStorage('localStorage'); - break; - default: - storedData = null; - } - if (storedData) { - angular.extend(data, storedData); - return true; + let storeType = { + sessionStorage: 'sessionStorage', + localStorage: 'localStorage' + }[config.storage]; + + if (storeType){ + let storedData = fetchFromStorage(storeType); + + return storedData ? angular.extend(data, storedData) && true : false; } return false; From 57fdf174b9931663afa9a5146d1a131471076fc2 Mon Sep 17 00:00:00 2001 From: mikoloism Date: Mon, 1 Aug 2022 01:05:52 +0430 Subject: [PATCH 2/2] refactor : Create switch-case statement reusable and DRY - this make less memory usage - this is DRY - this is less line to render and execute (just reference to function) - actually this can be use more DRY principle by just one function (if you want, just make a notify me by mikoloism.github@gmail.com) GOOD JOB! :) --- src/angular-acl.js | 49 +++++++++++++++++++--------------------------- 1 file changed, 20 insertions(+), 29 deletions(-) diff --git a/src/angular-acl.js b/src/angular-acl.js index 0df0454..69003cf 100644 --- a/src/angular-acl.js +++ b/src/angular-acl.js @@ -2,6 +2,13 @@ var NG_HIDE_CLASS = 'ng-hide'; +const STORAGE_TYPES = { + sessionStorage: 'sessionStorage', + localStorage: 'localStorage' +}; + +const getStorageType = (value) => (STORAGE_TYPES[value]); + angular.module('mm.acl', []); angular.module('mm.acl').provider('AclService', [ @@ -58,49 +65,36 @@ angular.module('mm.acl').provider('AclService', [ * Persist data to storage based on config */ var save = function () { - // { case1: value1 }[case1] # => value1 - let storageType = { - sessionStorage: 'sessionStorage', - localStorage : 'localStorage' - }[config.storage]; + let storageType = getStorageType(config.storage); - storageType && saveToStorage(storageType); - } + return storageType && saveToStorage(storageType); }; var unset = function () { - switch (config.storage) { - case 'sessionStorage': - unsetFromStorage('sessionStorage'); - break; - case 'localStorage': - unsetFromStorage('localStorage'); - break; - default: - // Don't save - return; - } + let storageType = getStorageType(config.storage); + + return storageType && unsetFromStorage(storageType); }; /** * Persist data to web storage */ - var saveToStorage = function (storagetype) { - window[storagetype].setItem(config.storageKey, JSON.stringify(data)); + var saveToStorage = function (storageType) { + window[storageType].setItem(config.storageKey, JSON.stringify(data)); }; /** * Unset data from web storage */ - var unsetFromStorage = function (storagetype) { - window[storagetype].removeItem(config.storageKey); + var unsetFromStorage = function (storageType) { + window[storageType].removeItem(config.storageKey); }; /** * Retrieve data from web storage */ - var fetchFromStorage = function (storagetype) { - var data = window[storagetype].getItem(config.storageKey); + var fetchFromStorage = function (storageType) { + var data = window[storageType].getItem(config.storageKey); return (data) ? JSON.parse(data) : false; }; @@ -129,12 +123,9 @@ angular.module('mm.acl').provider('AclService', [ * @returns {boolean} */ function resume() { - let storeType = { - sessionStorage: 'sessionStorage', - localStorage: 'localStorage' - }[config.storage]; + let storageType = getStorageType(config.storage); - if (storeType){ + if (storageType){ let storedData = fetchFromStorage(storeType); return storedData ? angular.extend(data, storedData) && true : false;