Merge pull request #1063 from Safelite/feature/jzimmerman/PiniaStoreIssueFix
Changing pinia persisted state to use session storage instead of local storage. Added appropriate store reset logic.
This commit is contained in:
commit
29998788c1
3 changed files with 10 additions and 8 deletions
|
|
@ -22,8 +22,7 @@ export default {
|
||||||
mixins: [],
|
mixins: [],
|
||||||
setup() {
|
setup() {
|
||||||
const mainStore = useMainStore();
|
const mainStore = useMainStore();
|
||||||
mainStore.resetISSConfigState();
|
mainStore.populateInitialState(true);
|
||||||
mainStore.resetPageFields();
|
|
||||||
return { mainStore };
|
return { mainStore };
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ vueApp.config.compilerOptions.isCustomElement = (tag) =>
|
||||||
const pinia = createPinia();
|
const pinia = createPinia();
|
||||||
vueApp.use(pinia);
|
vueApp.use(pinia);
|
||||||
pinia.use(piniaPluginPersistedstate);
|
pinia.use(piniaPluginPersistedstate);
|
||||||
useMainStore().populateInitialState();
|
useMainStore().populateInitialState(false);
|
||||||
|
|
||||||
// Additional Vue items to setup
|
// Additional Vue items to setup
|
||||||
vueApp.use(router);
|
vueApp.use(router);
|
||||||
|
|
|
||||||
|
|
@ -2449,8 +2449,8 @@ export const useMainStore = defineStore({
|
||||||
},
|
},
|
||||||
|
|
||||||
// populate initial state
|
// populate initial state
|
||||||
populateInitialState() {
|
populateInitialState(forceReset) {
|
||||||
if (!localStorage.getItem(storeId)) {
|
if (!sessionStorage.getItem(storeId) || forceReset ) {
|
||||||
this.$state = state;
|
this.$state = state;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -2904,7 +2904,7 @@ export const useMainStore = defineStore({
|
||||||
submittedOrder.submitType = submitType;
|
submittedOrder.submitType = submitType;
|
||||||
submittedOrder.payment.isPayInAdvance = this.isPayInAdvance;
|
submittedOrder.payment.isPayInAdvance = this.isPayInAdvance;
|
||||||
|
|
||||||
// set to local storage
|
// set to sessionStorage
|
||||||
window.sessionStorage.setItem(webStorageConstants.SUBMITTED_ORDER, JSON.stringify(submittedOrder));
|
window.sessionStorage.setItem(webStorageConstants.SUBMITTED_ORDER, JSON.stringify(submittedOrder));
|
||||||
|
|
||||||
// clear vuex
|
// clear vuex
|
||||||
|
|
@ -2920,11 +2920,14 @@ export const useMainStore = defineStore({
|
||||||
},
|
},
|
||||||
|
|
||||||
resetSubmittedOrder() {
|
resetSubmittedOrder() {
|
||||||
// clear from local storage
|
// clear from sessionStorage
|
||||||
window.sessionStorage.removeItem(webStorageConstants.SUBMITTED_ORDER);
|
window.sessionStorage.removeItem(webStorageConstants.SUBMITTED_ORDER);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
persist: true
|
persist: {
|
||||||
|
// Default is localStorage, but sessionStorage is used here to ensure state is cleared when the browser tab is closed, preventing potential issues with stale data on return visits.
|
||||||
|
storage: sessionStorage
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// Private Functions
|
// Private Functions
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue