| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 | import jitsiLocalStorage from '../../../modules/util/JitsiLocalStorage';
import {
    HIDE_NOTIFICATION,
    SET_NOTIFICATIONS_ENABLED,
    SHOW_NOTIFICATION
} from './actionTypes';
import {
    Notification,
    NotificationWithToggle
} from './components';
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(Notification, {
        ...props,
        appearance: NOTIFICATION_TYPE.ERROR
    });
}
/**
 * Queues a notification for display.
 *
 * @param {ReactComponent} component - The notification component to be
 * displayed.
 * @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,
 *     component: ReactComponent,
 *     props: Object,
 *     timeout: number,
 *     uid: number
 * }}
 */
export function showNotification(component, props = {}, timeout) {
    return {
        type: SHOW_NOTIFICATION,
        component,
        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(Notification, {
        ...props,
        appearance: NOTIFICATION_TYPE.WARNING
    });
}
/**
 * Displays a notification unless the passed in persistenceKey value exists in
 * local storage and has been set to "true".
 *
 * @param {string} persistenceKey - The local storage key to look up for whether
 * or not the notification should display.
 * @param {Object} props - The props needed to show the notification component.
 * @returns {Function}
 */
export function maybeShowNotificationWithDoNotDisplay(persistenceKey, props) {
    return dispatch => {
        if (jitsiLocalStorage.getItem(persistenceKey) === 'true') {
            return;
        }
        const newProps = Object.assign({}, props, {
            onToggleSubmit: isToggled => {
                jitsiLocalStorage.setItem(persistenceKey, isToggled);
            }
        });
        dispatch({
            type: SHOW_NOTIFICATION,
            component: NotificationWithToggle,
            props: newProps,
            uid: window.Date.now()
        });
    };
}
 |