Leonard Kim 7341c7bf84 ref(notifications): stop passing around Notifications component
Passing around of the component was used when there were two
independent Notification components. Now that there is only
one Notification component, it is not necessary to pass
around the component.
2018-02-12 17:53:29 -06:00

89 lines
1.9 KiB
JavaScript

import {
HIDE_NOTIFICATION,
SET_NOTIFICATIONS_ENABLED,
SHOW_NOTIFICATION
} from './actionTypes';
import { NOTIFICATION_TYPE } from './constants';
/**
* Removes the notification with the passed in id.
*
* @param {string} uid - The unique identifier for the notification to be
* removed.
* @returns {{
* type: HIDE_NOTIFICATION,
* uid: number
* }}
*/
export function hideNotification(uid) {
return {
type: HIDE_NOTIFICATION,
uid
};
}
/**
* Stops notifications from being displayed.
*
* @param {boolean} enabled - Whether or not notifications should display.
* @returns {{
* type: SET_NOTIFICATIONS_ENABLED,
* enabled: boolean
* }}
*/
export function setNotificationsEnabled(enabled) {
return {
type: SET_NOTIFICATIONS_ENABLED,
enabled
};
}
/**
* Queues an error notification for display.
*
* @param {Object} props - The props needed to show the notification component.
* @returns {Object}
*/
export function showErrorNotification(props) {
return showNotification({
...props,
appearance: NOTIFICATION_TYPE.ERROR
});
}
/**
* Queues a notification for display.
*
* @param {Object} props - The props needed to show the notification component.
* @param {number} timeout - How long the notification should display before
* automatically being hidden.
* @returns {{
* type: SHOW_NOTIFICATION,
* props: Object,
* timeout: number,
* uid: number
* }}
*/
export function showNotification(props = {}, timeout) {
return {
type: SHOW_NOTIFICATION,
props,
timeout,
uid: window.Date.now()
};
}
/**
* Queues a warning notification for display.
*
* @param {Object} props - The props needed to show the notification component.
* @returns {Object}
*/
export function showWarningNotification(props) {
return showNotification({
...props,
appearance: NOTIFICATION_TYPE.WARNING
});
}