Merge pull request #313 from vector-im/dbkr/fix_time_limit

Return to normal state when time limit reached
This commit is contained in:
David Baker
2022-05-06 21:28:40 +01:00
committed by GitHub
2 changed files with 32 additions and 12 deletions

View File

@@ -18,7 +18,13 @@ import { useCallback, useEffect, useState } from "react";
export function usePTT(client, groupCall, userMediaFeeds) {
const [
{ pttButtonHeld, isAdmin, talkOverEnabled, activeSpeakerUserId },
{
pttButtonHeld,
isAdmin,
talkOverEnabled,
activeSpeakerUserId,
unmuteError,
},
setState,
] = useState(() => {
const roomMember = groupCall.room.getMember(client.getUserId());
@@ -30,6 +36,7 @@ export function usePTT(client, groupCall, userMediaFeeds) {
talkOverEnabled: false,
pttButtonHeld: false,
activeSpeakerUserId: activeSpeakerFeed ? activeSpeakerFeed.userId : null,
unmuteError: null,
};
});
@@ -63,22 +70,29 @@ export function usePTT(client, groupCall, userMediaFeeds) {
};
}, [userMediaFeeds]);
const startTalking = useCallback(() => {
const startTalking = useCallback(async () => {
setState((prevState) => ({
...prevState,
pttButtonHeld: true,
unmuteError: null,
}));
if (!activeSpeakerUserId || isAdmin || talkOverEnabled) {
if (groupCall.isMicrophoneMuted()) {
groupCall.setMicrophoneMuted(false);
try {
await groupCall.setMicrophoneMuted(false);
} catch (e) {
setState((prevState) => ({ ...prevState, unmuteError: null }));
}
}
setState((prevState) => ({ ...prevState, pttButtonHeld: true }));
}
}, []);
}, [setState]);
const stopTalking = useCallback(() => {
setState((prevState) => ({ ...prevState, pttButtonHeld: false }));
if (!groupCall.isMicrophoneMuted()) {
groupCall.setMicrophoneMuted(true);
}
setState((prevState) => ({ ...prevState, pttButtonHeld: false }));
}, []);
useEffect(() => {
@@ -86,6 +100,8 @@ export function usePTT(client, groupCall, userMediaFeeds) {
if (event.code === "Space") {
event.preventDefault();
if (pttButtonHeld) return;
startTalking();
}
}
@@ -116,7 +132,7 @@ export function usePTT(client, groupCall, userMediaFeeds) {
window.removeEventListener("keyup", onKeyUp);
window.removeEventListener("blur", onBlur);
};
}, [activeSpeakerUserId, isAdmin, talkOverEnabled]);
}, [activeSpeakerUserId, isAdmin, talkOverEnabled, pttButtonHeld]);
const setTalkOverEnabled = useCallback((talkOverEnabled) => {
setState((prevState) => ({
@@ -133,5 +149,6 @@ export function usePTT(client, groupCall, userMediaFeeds) {
activeSpeakerUserId,
startTalking,
stopTalking,
unmuteError,
};
}