import { defineStore } from 'pinia'; import { dummyList, users } from './dummyData'; type User = { name: string; }; type ShoppingItem = { name: string; price: number; isBought: boolean; user: User; }; export const useShoppingListStore = defineStore('shoppingList', { state() { return { items: dummyList as Array, users: users as Array, }; }, actions: {}, getters: { openItems: state => state.items.filter(item => !item.isBought), boughtItems: state => state.items.filter(item => !!item.isBought), itemsByUser: state => groupItemsByUser(state.items), openItemsByUser: state => groupItemsByUser(state.items.filter(item => !item.isBought)), boughtItemsByUser: state => groupItemsByUser(state.items.filter(item => !!item.isBought)), }, }); export const groupItemsByUser = items => items.reduce((groups, item) => { if (!groups[item.user.name]) groups[item.user.name] = []; groups[item.user.name].push(item); return groups; }, {});