Merge branch 'improvements-local-and-session-storage-usage' into 'dev'

improvements: unique local and session storage name

See merge request keanuapp/keanuapp-weblite!116
This commit is contained in:
N Pex 2022-11-07 15:09:28 +00:00
commit 877646db71

View file

@ -3,16 +3,17 @@ import Vuex from 'vuex'
import VuexPersist from 'vuex-persist'
Vue.use(Vuex)
const USER = `convene_${ window.location.hostname }_user`
const SETTINGS = `convene_${ window.location.hostname }_settings`
// A Vuex plugin to persist the user object to either session or local storage, based on flag in the store state.
//
const persistUserPlugin = store => {
var user;
if (store.state.useLocalStorage) {
user = JSON.parse(window.localStorage.getItem('user'));
user = JSON.parse(window.localStorage.getItem(USER));
} else {
user = JSON.parse(window.sessionStorage.getItem('user'));
user = JSON.parse(window.sessionStorage.getItem(USER));
}
const initialState = user ? { status: { loggedIn: true }, user } : { status: { loggedIn: false }, user: null };
store.state.auth = initialState;
@ -20,11 +21,11 @@ const persistUserPlugin = store => {
store.subscribe((mutation, state) => {
if (mutation.type == 'setUser' || mutation.type == 'setUseLocalStorage') {
if (state.useLocalStorage) {
window.localStorage.setItem('user', JSON.stringify(state.auth.user));
window.sessionStorage.removeItem('user');
window.localStorage.setItem(USER, JSON.stringify(state.auth.user));
window.sessionStorage.removeItem(USER);
} else {
window.sessionStorage.setItem('user', JSON.stringify(state.auth.user));
window.localStorage.removeItem('user');
window.sessionStorage.setItem(USER, JSON.stringify(state.auth.user));
window.localStorage.removeItem(USER);
}
}
})
@ -32,7 +33,7 @@ const persistUserPlugin = store => {
const vuexPersistLocalStorage = new VuexPersist({
key: 'settings',
key: SETTINGS,
storage: localStorage,
reducer: state => {
if (state.useLocalStorage) {
@ -47,7 +48,7 @@ const vuexPersistLocalStorage = new VuexPersist({
})
const vuexPersistSessionStorage = new VuexPersist({
key: 'settings',
key: SETTINGS,
storage: sessionStorage,
reducer: state => {
if (!state.useLocalStorage) {
@ -61,7 +62,7 @@ const vuexPersistSessionStorage = new VuexPersist({
}
})
const defaultUseSessionStorage = (sessionStorage.getItem('user') != null);
const defaultUseSessionStorage = (sessionStorage.getItem(USER) != null);
export default new Vuex.Store({
state: { language: null, currentRoomId: null, auth: null, tempuser: null, useLocalStorage: !defaultUseSessionStorage },