1. Retain the lang value in LocalStorage when logging out 2. Add clearLocalStorage func && add unit test Change-Id: I84cf361bfcaa40d2a6d80f687d02f43665cef3d3
60 lines
1.4 KiB
JavaScript
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);
|
|
}
|
|
});
|
|
};
|