38 lines
1.1 KiB
JavaScript
38 lines
1.1 KiB
JavaScript
import { createSelector } from 'reselect';
|
|
|
|
export const selectState = state => state.notifications || {};
|
|
|
|
export const selectNotifications = createSelector(selectState, state => state.notifications);
|
|
|
|
export const selectIsFetchingNotifications = createSelector(selectState, state => state.fetchingNotifications);
|
|
|
|
export const selectUnreadNotificationCount = createSelector(selectNotifications, notifications => {
|
|
return notifications ? notifications.filter(notification => !notification.is_read).length : 0;
|
|
});
|
|
|
|
export const selectUnseenNotificationCount = createSelector(selectNotifications, notifications => {
|
|
return notifications ? notifications.filter(notification => !notification.is_seen).length : 0;
|
|
});
|
|
|
|
export const selectToast = createSelector(selectState, state => {
|
|
if (state.toasts.length) {
|
|
const { id, params } = state.toasts[0];
|
|
return {
|
|
id,
|
|
...params,
|
|
};
|
|
}
|
|
|
|
return null;
|
|
});
|
|
|
|
export const selectError = createSelector(selectState, state => {
|
|
if (state.errors.length) {
|
|
const { error } = state.errors[0];
|
|
return {
|
|
error,
|
|
};
|
|
}
|
|
|
|
return null;
|
|
});
|