Initial commit
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
import { create } from 'zustand'
|
||||
|
||||
const MAX_COMPARE_ITEMS = 3
|
||||
|
||||
interface CompareState {
|
||||
compareTray: string[]
|
||||
addToCompare: (propertyId: string) => void
|
||||
removeFromCompare: (propertyId: string) => void
|
||||
clearCompare: () => void
|
||||
isInCompare: (propertyId: string) => boolean
|
||||
isFull: () => boolean
|
||||
}
|
||||
|
||||
export const useCompareStore = create<CompareState>((set, get) => ({
|
||||
compareTray: [],
|
||||
addToCompare: (propertyId) =>
|
||||
set((state) => {
|
||||
if (state.compareTray.length >= MAX_COMPARE_ITEMS) return state
|
||||
if (state.compareTray.includes(propertyId)) return state
|
||||
return { compareTray: [...state.compareTray, propertyId] }
|
||||
}),
|
||||
removeFromCompare: (propertyId) =>
|
||||
set((state) => ({ compareTray: state.compareTray.filter(id => id !== propertyId) })),
|
||||
clearCompare: () => set({ compareTray: [] }),
|
||||
isInCompare: (propertyId) => get().compareTray.includes(propertyId),
|
||||
isFull: () => get().compareTray.length >= MAX_COMPARE_ITEMS,
|
||||
}))
|
||||
Reference in New Issue
Block a user