skyline/src/utils/local-storage.js
Jingwei.Zhang 4643795bcb fix: fix lang local storage after logout
1. Retain the lang value in LocalStorage when logging out
2. Add clearLocalStorage func && add unit test

Change-Id: I84cf361bfcaa40d2a6d80f687d02f43665cef3d3
2022-08-02 16:16:43 +08:00

60 lines
1.4 KiB
JavaScript

// 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);
}
});
};