import type { WishlistAction, WishlistItem, WishlistState } from './entities'; export function wishlistReducer(state: WishlistState, action: WishlistAction): WishlistState { switch (action.type) { case 'TOGGLE_ITEM': { const exists = state.items.some((item) => item.id === action.payload.id); if (exists) { return { ...state, items: state.items.filter((item) => item.id !== action.payload.id), }; } return { ...state, items: [...state.items, action.payload] }; } case 'REMOVE_ITEM': return { ...state, items: state.items.filter((item) => item.id !== action.payload), }; case 'CLEAR_WISHLIST': return { ...state, items: [] }; case 'RESTORE_ITEMS': return { ...state, items: action.payload }; case 'TOGGLE_DRAWER': return { ...state, isOpen: !state.isOpen }; case 'OPEN_DRAWER': return { ...state, isOpen: true }; case 'CLOSE_DRAWER': return { ...state, isOpen: false }; default: return state; } } export function isInWishlist(items: WishlistItem[], id: string): boolean { return items.some((item) => item.id === id); } export function getWishlistCount(items: WishlistItem[]): number { return items.length; }