Skip to content

Commit 3038192

Browse files
authored
[Calling] Applying capability for Reaction feature (#4013)
1 parent 7a59aa4 commit 3038192

17 files changed

Lines changed: 62 additions & 2 deletions
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"type": "minor",
3+
"area": "improvement",
4+
"workstream": "Applying capability for reaction feature",
5+
"comment": "Applying meeting capability for reaction feature",
6+
"packageName": "@azure/communication-react",
7+
"email": "mbellah@microsoft.com",
8+
"dependentChangeType": "patch"
9+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"type": "minor",
3+
"area": "improvement",
4+
"workstream": "Applying capability for reaction feature",
5+
"comment": "Applying meeting capability for reaction feature",
6+
"packageName": "@azure/communication-react",
7+
"email": "mbellah@microsoft.com",
8+
"dependentChangeType": "patch"
9+
}

packages/react-composites/src/composites/CallComposite/components/CallControls.tsx

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,11 @@ import {
4949
} from '../../common/ControlBar/CustomButton';
5050
/* @conditional-compile-remove(reaction) */
5151
import { Reaction } from './buttons/Reaction';
52+
/* @conditional-compile-remove(reaction) */
53+
import { useSelector } from '../hooks/useSelector';
54+
/* @conditional-compile-remove(reaction) */
55+
import { capabilitySelector } from '../../CallComposite/selectors/capabilitySelector';
56+
5257
/**
5358
* @private
5459
*/
@@ -137,6 +142,12 @@ export const CallControls = (props: CallControlsProps & ContainerRectProps): JSX
137142
/* @conditional-compile-remove(raise-hand) */
138143
const raiseHandButtonProps = usePropsFor(RaiseHandButton) as RaiseHandButtonProps;
139144

145+
/* @conditional-compile-remove(reaction) */
146+
const capabilitiesSelector = useSelector(capabilitySelector);
147+
/* @conditional-compile-remove(reaction) */
148+
const isReactionAllowed =
149+
!capabilitiesSelector?.capabilities || capabilitiesSelector.capabilities.useReactions.isPresent;
150+
140151
/* @conditional-compile-remove(PSTN-calls) */
141152
const alternateCallerId = useAdapter().getState().alternateCallerId;
142153

@@ -172,7 +183,7 @@ export const CallControls = (props: CallControlsProps & ContainerRectProps): JSX
172183
}
173184

174185
/* @conditional-compile-remove(reaction) */
175-
const showReactionButtonInControlBar = isEnabled(options?.reactionButton) && !props.isMobile;
186+
const showReactionButtonInControlBar = isEnabled(options?.reactionButton) && isReactionAllowed && !props.isMobile;
176187
/* @conditional-compile-remove(reaction) */
177188
if (showReactionButtonInControlBar) {
178189
numberOfButtons++;

packages/react-composites/src/composites/CallComposite/selectors/baseSelectors.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
// Licensed under the MIT License.
33

44
import { CallState as SDKCallStatus, DominantSpeakersInfo } from '@azure/communication-calling';
5+
import { ParticipantCapabilities } from '@azure/communication-calling';
56
import { VideoDeviceInfo, AudioDeviceInfo } from '@azure/communication-calling';
67
/* @conditional-compile-remove(capabilities) */
78
import { CapabilitiesChangeInfo } from '@azure/communication-calling';
@@ -62,6 +63,12 @@ export const getIsScreenShareOn = (state: CallAdapterState): boolean => state.ca
6263
export const getLocalParticipantRaisedHand = (state: CallAdapterState): RaisedHandState | undefined =>
6364
state.call?.raiseHand.localParticipantRaisedHand;
6465

66+
/**
67+
* @private
68+
*/
69+
export const getCapabilites = (state: CallAdapterState): ParticipantCapabilities | undefined =>
70+
state.call?.capabilitiesFeature?.capabilities;
71+
6572
/**
6673
* @private
6774
*/
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
// Copyright (c) Microsoft Corporation.
2+
// Licensed under the MIT License.
3+
4+
import * as reselect from 'reselect';
5+
import { getCapabilites } from './baseSelectors';
6+
7+
/**
8+
* @private
9+
*/
10+
export const capabilitySelector = reselect.createSelector([getCapabilites], (capabilities) => {
11+
return {
12+
capabilities
13+
};
14+
});

packages/react-composites/src/composites/common/ControlBar/CommonCallControlBar.tsx

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,10 @@ import { CaptionsSettingsModal } from '../CaptionsSettingsModal';
4545
import { RaiseHand } from '../../CallComposite/components/buttons/RaiseHand';
4646
/* @conditional-compile-remove(reaction) */
4747
import { Reaction } from '../../CallComposite/components/buttons/Reaction';
48+
/* @conditional-compile-remove(reaction) */
49+
import { useSelector } from '../../CallComposite/hooks/useSelector';
50+
/* @conditional-compile-remove(reaction) */
51+
import { capabilitySelector } from '../../CallComposite/selectors/capabilitySelector';
4852
/**
4953
* @private
5054
*/
@@ -222,6 +226,12 @@ export const CommonCallControlBar = (props: CommonCallControlBarProps & Containe
222226
[options]
223227
);
224228

229+
/* @conditional-compile-remove(reaction) */
230+
const capabilitiesSelector = useSelector(capabilitySelector);
231+
/* @conditional-compile-remove(reaction) */
232+
const isReactionAllowed =
233+
!capabilitiesSelector?.capabilities || capabilitiesSelector.capabilities.useReactions.isPresent;
234+
225235
// when options is false then we want to hide the whole control bar.
226236
if (options === false) {
227237
return <></>;
@@ -320,7 +330,7 @@ export const CommonCallControlBar = (props: CommonCallControlBarProps & Containe
320330
)}
321331
{
322332
/* @conditional-compile-remove(reaction) */
323-
!props.mobileView && isEnabled(options.reactionButton) && (
333+
!props.mobileView && isReactionAllowed && isEnabled(options.reactionButton) && (
324334
<Reaction
325335
displayType={options.displayType}
326336
styles={commonButtonStyles}
Loading
Loading
Loading

0 commit comments

Comments
 (0)