signal-desktop/ts/hooks/useActivateSpeakerViewOnPresenting.ts

41 lines
1 KiB
TypeScript
Raw Normal View History

// Copyright 2021 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import { useEffect } from 'react';
2021-09-17 22:24:21 +00:00
import { usePrevious } from './usePrevious';
type RemoteParticipant = {
hasRemoteVideo: boolean;
presenting: boolean;
title: string;
uuid?: string;
};
export function useActivateSpeakerViewOnPresenting({
remoteParticipants,
switchToPresentationView,
switchFromPresentationView,
}: {
remoteParticipants: ReadonlyArray<RemoteParticipant>;
switchToPresentationView: () => void;
switchFromPresentationView: () => void;
}): void {
const presenterUuid = remoteParticipants.find(
participant => participant.presenting
)?.uuid;
const prevPresenterUuid = usePrevious(presenterUuid, presenterUuid);
useEffect(() => {
if (prevPresenterUuid !== presenterUuid && presenterUuid) {
switchToPresentationView();
} else if (prevPresenterUuid && !presenterUuid) {
switchFromPresentationView();
}
}, [
presenterUuid,
prevPresenterUuid,
switchToPresentationView,
switchFromPresentationView,
]);
}