[RN] Tint active speaker thumbnail
This commit is contained in:
parent
9c4da125c8
commit
96a837801e
|
@ -83,19 +83,6 @@ type Props = {
|
||||||
*/
|
*/
|
||||||
participantId: string,
|
participantId: string,
|
||||||
|
|
||||||
/**
|
|
||||||
* True if the avatar of the depicted participant is to be shown should the
|
|
||||||
* avatar be available and the video of the participant is not to be shown;
|
|
||||||
* otherwise, false. If undefined, defaults to true.
|
|
||||||
*/
|
|
||||||
showAvatar: boolean,
|
|
||||||
|
|
||||||
/**
|
|
||||||
* True if the video of the depicted participant is to be shown should the
|
|
||||||
* video be available. If undefined, defaults to true.
|
|
||||||
*/
|
|
||||||
showVideo: boolean,
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The style, if any, to apply to {@link ParticipantView} in addition to its
|
* The style, if any, to apply to {@link ParticipantView} in addition to its
|
||||||
* default style.
|
* default style.
|
||||||
|
@ -107,6 +94,12 @@ type Props = {
|
||||||
*/
|
*/
|
||||||
t: Function,
|
t: Function,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If true, a tinting will be applied to the view, regardless of video or
|
||||||
|
* avatar is rendered.
|
||||||
|
*/
|
||||||
|
tintEnabled: boolean,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The test hint id which can be used to locate the {@code ParticipantView}
|
* The test hint id which can be used to locate the {@code ParticipantView}
|
||||||
* on the jitsi-meet-torture side. If not provided, the
|
* on the jitsi-meet-torture side. If not provided, the
|
||||||
|
@ -211,28 +204,19 @@ class ParticipantView extends Component<Props> {
|
||||||
// doesn't retain the last frame forever, so we would end up with a
|
// doesn't retain the last frame forever, so we would end up with a
|
||||||
// black screen.
|
// black screen.
|
||||||
const waitForVideoStarted = false;
|
const waitForVideoStarted = false;
|
||||||
let renderVideo
|
const renderVideo
|
||||||
= !this.props._audioOnly
|
= !this.props._audioOnly
|
||||||
&& (connectionStatus
|
&& (connectionStatus
|
||||||
=== JitsiParticipantConnectionStatus.ACTIVE)
|
=== JitsiParticipantConnectionStatus.ACTIVE)
|
||||||
&& shouldRenderVideoTrack(videoTrack, waitForVideoStarted);
|
&& shouldRenderVideoTrack(videoTrack, waitForVideoStarted);
|
||||||
|
|
||||||
// Is the avatar to be rendered?
|
// Is the avatar to be rendered?
|
||||||
let renderAvatar = Boolean(!renderVideo && avatar);
|
const renderAvatar = Boolean(!renderVideo && avatar);
|
||||||
|
|
||||||
// The consumer of this ParticipantView is allowed to forbid showing the
|
|
||||||
// video if the private logic of this ParticipantView determines that
|
|
||||||
// the video could be rendered.
|
|
||||||
renderVideo = renderVideo && _toBoolean(this.props.showVideo, true);
|
|
||||||
|
|
||||||
// The consumer of this ParticipantView is allowed to forbid showing the
|
|
||||||
// avatar if the private logic of this ParticipantView determines that
|
|
||||||
// the avatar could be rendered.
|
|
||||||
renderAvatar = renderAvatar && _toBoolean(this.props.showAvatar, true);
|
|
||||||
|
|
||||||
// If the connection has problems, we will "tint" the video / avatar.
|
// If the connection has problems, we will "tint" the video / avatar.
|
||||||
const useTint
|
const useTint
|
||||||
= connectionStatus !== JitsiParticipantConnectionStatus.ACTIVE;
|
= connectionStatus !== JitsiParticipantConnectionStatus.ACTIVE
|
||||||
|
|| this.props.tintEnabled;
|
||||||
|
|
||||||
const testHintId
|
const testHintId
|
||||||
= this.props.testHintId
|
= this.props.testHintId
|
||||||
|
@ -278,21 +262,6 @@ class ParticipantView extends Component<Props> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Converts the specified value to a boolean value. If the specified value is
|
|
||||||
* undefined, returns the boolean value of undefinedValue.
|
|
||||||
*
|
|
||||||
* @param {any} value - The value to convert to a boolean value should it not be
|
|
||||||
* undefined.
|
|
||||||
* @param {any} undefinedValue - The value to convert to a boolean value should
|
|
||||||
* the specified value be undefined.
|
|
||||||
* @private
|
|
||||||
* @returns {boolean}
|
|
||||||
*/
|
|
||||||
function _toBoolean(value, undefinedValue) {
|
|
||||||
return Boolean(typeof value === 'undefined' ? undefinedValue : value);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Maps (parts of) the redux state to the associated {@link ParticipantView}'s
|
* Maps (parts of) the redux state to the associated {@link ParticipantView}'s
|
||||||
* props.
|
* props.
|
||||||
|
|
|
@ -79,8 +79,8 @@ class Thumbnail extends Component {
|
||||||
const audioMuted = !audioTrack || audioTrack.muted;
|
const audioMuted = !audioTrack || audioTrack.muted;
|
||||||
const renderAudio = !audioMuted && !audioTrack.local;
|
const renderAudio = !audioMuted && !audioTrack.local;
|
||||||
const participantId = participant.id;
|
const participantId = participant.id;
|
||||||
const participantNotInLargeVideo
|
const participantInLargeVideo
|
||||||
= participantId !== largeVideo.participantId;
|
= participantId === largeVideo.participantId;
|
||||||
const videoMuted = !videoTrack || videoTrack.muted;
|
const videoMuted = !videoTrack || videoTrack.muted;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
@ -96,8 +96,7 @@ class Thumbnail extends Component {
|
||||||
<ParticipantView
|
<ParticipantView
|
||||||
avatarSize = { AVATAR_SIZE }
|
avatarSize = { AVATAR_SIZE }
|
||||||
participantId = { participantId }
|
participantId = { participantId }
|
||||||
showAvatar = { participantNotInLargeVideo }
|
tintEnabled = { participantInLargeVideo }
|
||||||
showVideo = { participantNotInLargeVideo }
|
|
||||||
zOrder = { 1 } />
|
zOrder = { 1 } />
|
||||||
|
|
||||||
{ participant.role === PARTICIPANT_ROLE.MODERATOR
|
{ participant.role === PARTICIPANT_ROLE.MODERATOR
|
||||||
|
|
Loading…
Reference in New Issue