34 lines
904 B
JavaScript
34 lines
904 B
JavaScript
import { Map } from 'immutable';
|
|
import { createSelector } from 'reselect';
|
|
|
|
import { getActiveEventId } from './activeEvent.js';
|
|
|
|
const getState = (state) => state;
|
|
|
|
export const getEventById = (state, eventId) => state.getIn(['events', eventId], false);
|
|
|
|
export const getEvents = createSelector(
|
|
[getState],
|
|
(state) => state.get('events') || new Map(),
|
|
);
|
|
|
|
export const getActiveEvent = createSelector(
|
|
[getActiveEventId, getEvents],
|
|
(eventId, eventsAsMap) => (eventId ? eventsAsMap.get(eventId) : null),
|
|
);
|
|
|
|
export const getDefaultEvent = createSelector(
|
|
[getActiveEvent, getEvents],
|
|
(activeEvent, eventsAsMap) => activeEvent || eventsAsMap.first(),
|
|
);
|
|
|
|
export const getEventsAsList = createSelector(
|
|
[getEvents],
|
|
(eventsAsMap) => eventsAsMap.toList(),
|
|
);
|
|
|
|
export const hasMultipleEvents = createSelector(
|
|
[getEvents],
|
|
(eventsAsMap) => eventsAsMap.size > 1,
|
|
);
|