UNPKG

wbu-design-system

Version:

WhereBy.Design is the nascent design system for WhereBy.Us

64 lines (51 loc) 2.08 kB
import { isEmpty } from 'lodash'; import EventService from '../../services/eventService'; export default { name: 'EventsVuexModule', state: { upcomingEvents: [], }, actions: { async getUpcomingEvents({ commit }) { const upcomingEvents = await EventService.getUpcomingEvents(); commit('addMultipleEventsToState', upcomingEvents); }, }, getters: { filterUpcomingEvents: (state, getters) => (brand, phrase, startDate) => { const eventsByBrand = getters.getUpcomingEventsByBrand(brand); const eventsByDate = getters.getUpcomingEventsByStartDate(startDate); const eventsByBrandAndDate = eventsByBrand.filter(event => eventsByDate.includes(event)); return EventService.filterEventsByPhraseInDescription(phrase, eventsByBrandAndDate); }, getUpcomingEventsByBrand: (state, getters) => (brand) => { if (isEmpty(brand)) { return getters.getUpcomingEvents(); } return state.upcomingEvents.filter(event => event.brand === brand); }, getUpcomingEventsByStartDate: (state, getters) => (startDateString) => { if (isEmpty(startDateString)) { return getters.getUpcomingEvents(); } return state.upcomingEvents.filter(event => event.startDate === startDateString); }, getUpcomingEvents: state => () => state.upcomingEvents, }, mutations: { addSingleEventToState: (state, event) => { state.upcomingEvents.push(event); }, addMultipleEventsToState: (state, events) => { state.upcomingEvents = events; // eslint-disable-line }, removeEventFromState: (state, { eventToRemove }) => { const indexOfEventToRemove = state.upcomingEvents.findIndex(event => event.id === eventToRemove.id); state.upcomingEvents.splice(indexOfEventToRemove, 1); }, replaceEventInState: (state, { eventToReplace }) => { const indexOfEventToReplace = state.upcomingEvents.findIndex(event => event.id === eventToReplace.id); state.upcomingEvents.splice(indexOfEventToReplace, 1, eventToReplace); }, }, };