// Copyright 2021 99cloud // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. export const getLocalStorageItem = (key) => { const item = localStorage.getItem(key); try { const { expires, value } = JSON.parse(item); if (Date.now() > expires) { localStorage.removeItem(key); return null; } return value; } catch (e) { return item; } }; // 864000000: 10 days export const setLocalStorageItem = ( key, value, maxAge = 864000000, expiry = 0 ) => { try { localStorage.setItem( key, JSON.stringify({ expires: expiry || Date.now() + maxAge, value, }) ); } catch (e) {} }; export const clearLocalStorage = (expectKeys = []) => { if (!expectKeys.length) { localStorage.clear(); return; } const keys = Object.keys(localStorage); keys.forEach((key) => { if (!expectKeys.includes(key)) { localStorage.removeItem(key); } }); };