outstock_nuxt3/store/useCompare.ts

43 lines
1.4 KiB
TypeScript

import { defineStore } from 'pinia';
import ProductType from '~~/types/productType';
export const useCompareStore = defineStore('compare', {
state: () => ({
compare: [] as ProductType[],
}),
actions: {
add_compare_product(payload: ProductType) {
const isAdded = this.compare.findIndex(p => p.id === payload.id)
if(isAdded !== -1){
this.compare = this.compare.filter(p => p.id !== payload.id)
useNuxtApp().$toast.error(`${payload.title} remove to compare`);
}
else {
this.compare.unshift(payload)
useNuxtApp().$toast.success(`${payload.title} added to compare`);
}
localStorage.setItem('compare_products', JSON.stringify(this.compare));
},
removeCompare(payload: ProductType){
this.compare = this.compare.filter(p => p.id !== payload.id)
useNuxtApp().$toast.error(`${payload.title} remove to compare`);
localStorage.setItem('compare_products', JSON.stringify(this.compare));
}
},
getters: {
get_compare_products:(state) => {
if (process.client) {
const data = localStorage.getItem('compare_products');
if (data) {
return state.compare = JSON.parse(data);
} else {
localStorage.setItem('compare_products', JSON.stringify([]));
return state.compare = [];
}
} else {
return state.compare;
}
}
}
})