diff --git a/react/features/base/participants/functions.ts b/react/features/base/participants/functions.ts index e693b074a..e958188ff 100644 --- a/react/features/base/participants/functions.ts +++ b/react/features/base/participants/functions.ts @@ -267,6 +267,22 @@ export function getVirtualScreenshareParticipantOwnerId(id: string) { return id.split('-')[0]; } +/** + * Returns owner participant IDs of the virtual screenshares participant. + * + * @param {(Function|Object)} stateful - The (whole) redux state, or redux's. + * @returns {(string[])} + */ +export function getVirtualScreenshareParticipantOwnerIds(stateful: IStateful) { + const virtualScreenshareParticipants = toState(stateful)['features/base/participants'] + .sortedRemoteVirtualScreenshareParticipants; + + const virtualScreenshareParticipantIds = Array.from(virtualScreenshareParticipants.keys()) + .map(id => getVirtualScreenshareParticipantOwnerId(id)); + + return virtualScreenshareParticipantIds; +} + /** * Returns the Map with fake participants. * diff --git a/react/features/filmstrip/components/web/Thumbnail.tsx b/react/features/filmstrip/components/web/Thumbnail.tsx index dccc9d8e1..ebb67553e 100644 --- a/react/features/filmstrip/components/web/Thumbnail.tsx +++ b/react/features/filmstrip/components/web/Thumbnail.tsx @@ -20,6 +20,7 @@ import { pinParticipant } from '../../../base/participants/actions'; import { getLocalParticipant, getParticipantByIdOrUndefined, + getVirtualScreenshareParticipantOwnerIds, hasRaisedHand, isLocalScreenshareParticipant, isScreenShareParticipant, @@ -1287,9 +1288,13 @@ function _mapStateToProps(state: IReduxState, ownProps: any): Object { const participantId = isLocal ? getLocalParticipant(state)?.id : participantID; const isActiveParticipant = activeParticipants.find((pId: string) => pId === participantId); const participantCurrentlyOnLargeVideo = state['features/large-video']?.participantId === id; + const virtualScreenshareParticipantOwnerIds = getVirtualScreenshareParticipantOwnerIds(state); const shouldDisplayTintBackground = _currentLayout !== LAYOUTS.TILE_VIEW && filmstripType === FILMSTRIP_TYPE.MAIN - && (isActiveParticipant || participantCurrentlyOnLargeVideo); + && (isActiveParticipant || participantCurrentlyOnLargeVideo) + + // skip showing tint for owner participants that are screensharing. + && !virtualScreenshareParticipantOwnerIds.includes(id); return { _audioTrack,