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
This commit is contained in:
parent
1ded7c2312
commit
4643795bcb
@ -17,7 +17,7 @@ import { RouterStore } from 'mobx-react-router';
|
|||||||
import { parse } from 'qs';
|
import { parse } from 'qs';
|
||||||
import client from 'client';
|
import client from 'client';
|
||||||
import { getQueryString } from 'utils/index';
|
import { getQueryString } from 'utils/index';
|
||||||
import { setLocalStorageItem } from 'utils/local-storage';
|
import { setLocalStorageItem, clearLocalStorage } from 'utils/local-storage';
|
||||||
import { isEmpty, values } from 'lodash';
|
import { isEmpty, values } from 'lodash';
|
||||||
|
|
||||||
export class RootStore {
|
export class RootStore {
|
||||||
@ -258,8 +258,8 @@ export class RootStore {
|
|||||||
stores.forEach((store) => {
|
stores.forEach((store) => {
|
||||||
store.clearData();
|
store.clearData();
|
||||||
});
|
});
|
||||||
// clear keystone_token in the local storage
|
// clear all local storage expect language
|
||||||
localStorage.clear();
|
clearLocalStorage(['lang']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,3 +44,16 @@ export const setLocalStorageItem = (
|
|||||||
);
|
);
|
||||||
} catch (e) {}
|
} 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);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
@ -12,7 +12,11 @@
|
|||||||
// See the License for the specific language governing permissions and
|
// See the License for the specific language governing permissions and
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
import { getLocalStorageItem, setLocalStorageItem } from './local-storage';
|
import {
|
||||||
|
getLocalStorageItem,
|
||||||
|
setLocalStorageItem,
|
||||||
|
clearLocalStorage,
|
||||||
|
} from './local-storage';
|
||||||
|
|
||||||
describe('test localstorage', () => {
|
describe('test localstorage', () => {
|
||||||
it('getLocalStorageItem', () => {
|
it('getLocalStorageItem', () => {
|
||||||
@ -41,4 +45,30 @@ describe('test localstorage', () => {
|
|||||||
expect(getLocalStorageItem('key')).toBe(null);
|
expect(getLocalStorageItem('key')).toBe(null);
|
||||||
localStorage.clear();
|
localStorage.clear();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('clearLocalStorage - clear all', () => {
|
||||||
|
expect(getLocalStorageItem('key1')).toBe(null);
|
||||||
|
expect(getLocalStorageItem('key2')).toBe(null);
|
||||||
|
setLocalStorageItem('key1', 'value1');
|
||||||
|
setLocalStorageItem('key2', 'value2');
|
||||||
|
expect(getLocalStorageItem('key1')).toBe('value1');
|
||||||
|
expect(getLocalStorageItem('key2')).toBe('value2');
|
||||||
|
clearLocalStorage();
|
||||||
|
expect(getLocalStorageItem('key1')).toBe(null);
|
||||||
|
expect(getLocalStorageItem('key2')).toBe(null);
|
||||||
|
localStorage.clear();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('clearLocalStorage - clear with expect', () => {
|
||||||
|
expect(getLocalStorageItem('key1')).toBe(null);
|
||||||
|
expect(getLocalStorageItem('key2')).toBe(null);
|
||||||
|
setLocalStorageItem('key1', 'value1');
|
||||||
|
setLocalStorageItem('key2', 'value2');
|
||||||
|
expect(getLocalStorageItem('key1')).toBe('value1');
|
||||||
|
expect(getLocalStorageItem('key2')).toBe('value2');
|
||||||
|
clearLocalStorage(['key1']);
|
||||||
|
expect(getLocalStorageItem('key1')).toBe('value1');
|
||||||
|
expect(getLocalStorageItem('key2')).toBe(null);
|
||||||
|
localStorage.clear();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user