123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- import { IReduxState, IStore } from '../app/types';
- import { isDisplayNameVisible } from '../base/config/functions.any';
- import {
- getLocalParticipant,
- getParticipantDisplayName,
- isScreenShareParticipant,
- isWhiteboardParticipant
- } from '../base/participants/functions';
- import { updateSettings } from '../base/settings/actions';
- import { getLargeVideoParticipant } from '../large-video/functions';
- import { isToolboxVisible } from '../toolbox/functions.web';
- import { isLayoutTileView } from '../video-layout/functions.any';
-
- /**
- * Appends a suffix to the display name.
- *
- * @param {string} displayName - The display name.
- * @param {string} suffix - Suffix that will be appended.
- * @returns {string} The formatted display name.
- */
- export function appendSuffix(displayName: string, suffix = ''): string {
- return `${displayName || suffix}${
- displayName && suffix && displayName !== suffix ? ` (${suffix})` : ''}`;
- }
-
- /**
- * Dispatches an action to update the local participant's display name. A
- * name must be entered for the action to dispatch.
- *
- * It returns a boolean to comply the Dialog behaviour:
- * {@code true} - the dialog should be closed.
- * {@code false} - the dialog should be left open.
- *
- * @param {Function} dispatch - Redux dispatch function.
- * @param {Function} onPostSubmit - Function to be invoked after a successful display name change.
- * @param {string} displayName - The display name to save.
- * @returns {boolean}
- */
- export function onSetDisplayName(dispatch: IStore['dispatch'], onPostSubmit?: Function) {
- return function(displayName: string) {
- if (!displayName?.trim()) {
- return false;
- }
-
- // Store display name in settings
- dispatch(updateSettings({
- displayName
- }));
-
- onPostSubmit?.();
-
- return true;
- };
- }
-
- /**
- * Returns true if the stage participant badge should be displayed and false otherwise.
- *
- * @param {IReduxState} state - The redux state.
- * @returns {boolean} - True if the stage participant badge should be displayed and false otherwise.
- */
- export function shouldDisplayStageParticipantBadge(state: IReduxState) {
- const largeVideoParticipant = getLargeVideoParticipant(state);
- const selectedId = largeVideoParticipant?.id;
- const nameToDisplay = getParticipantDisplayName(state, selectedId ?? '');
- const localId = getLocalParticipant(state)?.id;
- const isTileView = isLayoutTileView(state);
- const toolboxVisible: boolean = isToolboxVisible(state);
- const showDisplayName = isDisplayNameVisible(state);
-
- return Boolean(showDisplayName
- && nameToDisplay
- && selectedId !== localId
- && !isTileView
- && !isWhiteboardParticipant(largeVideoParticipant)
- && (!isScreenShareParticipant(largeVideoParticipant) || toolboxVisible)
- );
- }
|