import { createSlice, PayloadAction } from '@reduxjs/toolkit'; import { MemberType } from './MemberType'; import memoize from 'proxy-memoize'; import type { StoreState } from '../Store/store'; export const prayerCircleSlice = createSlice({ name: 'prayerCircle', initialState: { members: {} as Record, week: 0, useWeekdays: false, usePartners: true, }, reducers: { saveMember: (state, action: PayloadAction) => { const member = action.payload; state.members[member.id] = member; }, removeMember: (state, { payload: memberId }: PayloadAction) => { delete state.members[memberId]; }, setWeek: (state, { payload: week }: PayloadAction) => { state.week = week; }, setUseWeekdays: (state, { payload: useWeekdays }: PayloadAction) => { state.useWeekdays = useWeekdays; }, setUsePartners: (state, { payload: usePartners }: PayloadAction) => { state.usePartners = usePartners; }, }, }); export const { saveMember, removeMember, setWeek, setUseWeekdays, setUsePartners } = prayerCircleSlice.actions; export const { reducer: prayerCircle } = prayerCircleSlice; export const selectMembers = memoize((state: StoreState) => Object.values(state.prayerCircle.members)); export const selectMemberIds = memoize((state: StoreState) => Object.keys(state.prayerCircle.members));