53 lines
1.6 KiB
JavaScript
53 lines
1.6 KiB
JavaScript
import { translateToHTML } from '../base/i18n';
|
|
import { isSuboptimalBrowser } from '../base/environment';
|
|
import { toState } from '../base/redux';
|
|
|
|
import { getName } from '../app';
|
|
import {
|
|
areThereNotifications,
|
|
showWarningNotification
|
|
} from '../notifications';
|
|
import { getOverlayToRender } from '../overlay';
|
|
|
|
/**
|
|
* Shows the suboptimal experience notification if needed.
|
|
*
|
|
* @param {Function} dispatch - The dispatch method.
|
|
* @param {Function} t - The translation function.
|
|
* @returns {void}
|
|
*/
|
|
export function maybeShowSuboptimalExperienceNotification(dispatch, t) {
|
|
if (isSuboptimalBrowser()) {
|
|
dispatch(
|
|
showWarningNotification(
|
|
{
|
|
titleKey: 'notify.suboptimalExperienceTitle',
|
|
description: translateToHTML(
|
|
t,
|
|
'notify.suboptimalExperienceDescription',
|
|
{
|
|
appName: getName()
|
|
})
|
|
}
|
|
)
|
|
);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Tells whether or not the notifications should be displayed within
|
|
* the conference feature based on the current Redux state.
|
|
*
|
|
* @param {Object|Function} stateful - The redux store state.
|
|
* @returns {boolean}
|
|
*/
|
|
export function shouldDisplayNotifications(stateful) {
|
|
const state = toState(stateful);
|
|
const isAnyOverlayVisible = Boolean(getOverlayToRender(state));
|
|
const { calleeInfoVisible } = state['features/invite'];
|
|
|
|
return areThereNotifications(state)
|
|
&& !isAnyOverlayVisible
|
|
&& !calleeInfoVisible;
|
|
}
|