improvements: unique local and setting storage
This commit is contained in:
parent
fe150e621f
commit
456f4ded2a
1 changed files with 11 additions and 10 deletions
|
|
@ -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 },
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue