diff --git a/packages/@webex/plugin-meetings/src/constants.ts b/packages/@webex/plugin-meetings/src/constants.ts index 7ac6d9a2633..4994f8e81da 100644 --- a/packages/@webex/plugin-meetings/src/constants.ts +++ b/packages/@webex/plugin-meetings/src/constants.ts @@ -1094,6 +1094,9 @@ export const DISPLAY_HINTS = { // AI ATTENDEE_REQUEST_AI_ASSISTANT_ENABLED: 'ATTENDEE_REQUEST_AI_ASSISTANT_ENABLED', ATTENDEE_REQUEST_AI_ASSISTANT_DECLINED_ALL: 'ATTENDEE_REQUEST_AI_ASSISTANT_DECLINED_ALL', + + // Anonymous Display Names + ANONYMOUS_DISPLAY_NAMES_ENABLED: 'ANONYMOUS_DISPLAY_NAMES_ENABLED', }; export const INTERSTITIAL_DISPLAY_HINTS = [DISPLAY_HINTS.VOIP_IS_ENABLED]; diff --git a/packages/@webex/plugin-meetings/src/meeting/in-meeting-actions.ts b/packages/@webex/plugin-meetings/src/meeting/in-meeting-actions.ts index ff1c1b2008a..bb310f4f5ae 100644 --- a/packages/@webex/plugin-meetings/src/meeting/in-meeting-actions.ts +++ b/packages/@webex/plugin-meetings/src/meeting/in-meeting-actions.ts @@ -120,6 +120,7 @@ interface IInMeetingActions { canDisablePollingQA?: boolean; canAttendeeRequestAiAssistantEnabled?: boolean; isAttendeeRequestAiAssistantDeclinedAll?: boolean; + isAnonymizeDisplayNamesEnabled?: boolean; } /** @@ -346,6 +347,8 @@ export default class InMeetingActions implements IInMeetingActions { isAttendeeRequestAiAssistantDeclinedAll = null; + isAnonymizeDisplayNamesEnabled = null; + /** * Returns all meeting action options * @returns {Object} @@ -460,6 +463,7 @@ export default class InMeetingActions implements IInMeetingActions { canDisablePollingQA: this.canDisablePollingQA, canAttendeeRequestAiAssistantEnabled: this.canAttendeeRequestAiAssistantEnabled, isAttendeeRequestAiAssistantDeclinedAll: this.isAttendeeRequestAiAssistantDeclinedAll, + isAnonymizeDisplayNamesEnabled: this.isAnonymizeDisplayNamesEnabled, }); /** diff --git a/packages/@webex/plugin-meetings/src/meeting/index.ts b/packages/@webex/plugin-meetings/src/meeting/index.ts index 99461470b64..e98b753c66d 100644 --- a/packages/@webex/plugin-meetings/src/meeting/index.ts +++ b/packages/@webex/plugin-meetings/src/meeting/index.ts @@ -4616,6 +4616,9 @@ export default class Meeting extends StatelessWebexPlugin { ), isAttendeeRequestAiAssistantDeclinedAll: MeetingUtil.attendeeRequestAiAssistantDeclinedAll(this.userDisplayHints), + isAnonymizeDisplayNamesEnabled: MeetingUtil.isAnonymizeDisplayNamesEnabled( + this.userDisplayHints + ), }) || changed; } if (changed) { diff --git a/packages/@webex/plugin-meetings/src/meeting/util.ts b/packages/@webex/plugin-meetings/src/meeting/util.ts index 75a473a237a..692341031bb 100644 --- a/packages/@webex/plugin-meetings/src/meeting/util.ts +++ b/packages/@webex/plugin-meetings/src/meeting/util.ts @@ -945,6 +945,9 @@ const MeetingUtil = { attendeeRequestAiAssistantDeclinedAll: (displayHints = []) => displayHints.includes(DISPLAY_HINTS.ATTENDEE_REQUEST_AI_ASSISTANT_DECLINED_ALL), + isAnonymizeDisplayNamesEnabled: (displayHints) => + displayHints.includes(DISPLAY_HINTS.ANONYMOUS_DISPLAY_NAMES_ENABLED), + selfSupportsFeature: (feature: SELF_POLICY, userPolicies: Record) => { if (!userPolicies) { return true; diff --git a/packages/@webex/plugin-meetings/test/unit/spec/meeting/in-meeting-actions.ts b/packages/@webex/plugin-meetings/test/unit/spec/meeting/in-meeting-actions.ts index bc7bd213cf7..99ecf53aae7 100644 --- a/packages/@webex/plugin-meetings/test/unit/spec/meeting/in-meeting-actions.ts +++ b/packages/@webex/plugin-meetings/test/unit/spec/meeting/in-meeting-actions.ts @@ -114,6 +114,7 @@ describe('plugin-meetings', () => { canDisablePollingQA: null, canAttendeeRequestAiAssistantEnabled: null, isAttendeeRequestAiAssistantDeclinedAll: null, + isAnonymizeDisplayNamesEnabled: null, ...expected, }; @@ -234,6 +235,7 @@ describe('plugin-meetings', () => { 'canDisablePollingQA', 'canAttendeeRequestAiAssistantEnabled', 'isAttendeeRequestAiAssistantDeclinedAll', + 'isAnonymizeDisplayNamesEnabled', ].forEach((key) => { it(`get and set for ${key} work as expected`, () => { const inMeetingActions = new InMeetingActions(); diff --git a/packages/@webex/plugin-meetings/test/unit/spec/meeting/index.js b/packages/@webex/plugin-meetings/test/unit/spec/meeting/index.js index 9f87eb459fc..6e0211a46db 100644 --- a/packages/@webex/plugin-meetings/test/unit/spec/meeting/index.js +++ b/packages/@webex/plugin-meetings/test/unit/spec/meeting/index.js @@ -12550,6 +12550,7 @@ describe('plugin-meetings', () => { let showAutoEndMeetingWarningSpy; let canAttendeeRequestAiAssistantEnabledSpy; let attendeeRequestAiAssistantDeclinedAllSpy; + let isAnonymizeDisplayNamesEnabledSpy; // Due to import tree issues, hasHints must be stubed within the scope of the `it`. beforeEach(() => { @@ -12598,6 +12599,10 @@ describe('plugin-meetings', () => { MeetingUtil, 'attendeeRequestAiAssistantDeclinedAll' ); + isAnonymizeDisplayNamesEnabledSpy = sinon.spy( + MeetingUtil, + 'isAnonymizeDisplayNamesEnabled' + ); }); afterEach(() => { @@ -12606,6 +12611,7 @@ describe('plugin-meetings', () => { showAutoEndMeetingWarningSpy.restore(); canAttendeeRequestAiAssistantEnabledSpy.restore(); attendeeRequestAiAssistantDeclinedAllSpy.restore(); + isAnonymizeDisplayNamesEnabledSpy.restore(); }); forEach( @@ -13163,6 +13169,7 @@ describe('plugin-meetings', () => { meeting.roles ); assert.calledWith(attendeeRequestAiAssistantDeclinedAllSpy, userDisplayHints); + assert.calledWith(isAnonymizeDisplayNamesEnabledSpy, userDisplayHints); assert.calledWith(ControlsOptionsUtil.hasHints, { requiredHints: [DISPLAY_HINTS.MUTE_ALL], diff --git a/packages/@webex/plugin-meetings/test/unit/spec/meeting/utils.js b/packages/@webex/plugin-meetings/test/unit/spec/meeting/utils.js index 22973e279a9..6ec96171db6 100644 --- a/packages/@webex/plugin-meetings/test/unit/spec/meeting/utils.js +++ b/packages/@webex/plugin-meetings/test/unit/spec/meeting/utils.js @@ -1175,6 +1175,10 @@ describe('plugin-meetings', () => { {functionName: 'canSelectSpokenLanguages', displayHint: 'DISPLAY_NON_ENGLISH_ASR'}, {functionName: 'waitingForOthersToJoin', displayHint: 'WAITING_FOR_OTHERS'}, {functionName: 'showAutoEndMeetingWarning', displayHint: 'SHOW_AUTO_END_MEETING_WARNING'}, + { + functionName: 'isAnonymizeDisplayNamesEnabled', + displayHint: 'ANONYMOUS_DISPLAY_NAMES_ENABLED', + }, ].forEach(({functionName, displayHint}) => { describe(functionName, () => { it('works as expected', () => {