Store unmuteError in main state
This commit is contained in:
parent
a70dbb130f
commit
1253638861
1 changed files with 5 additions and 7 deletions
|
|
@ -2,7 +2,7 @@ import { useCallback, useEffect, useState } from "react";
|
||||||
|
|
||||||
export function usePTT(client, groupCall, userMediaFeeds) {
|
export function usePTT(client, groupCall, userMediaFeeds) {
|
||||||
const [
|
const [
|
||||||
{ pttButtonHeld, isAdmin, talkOverEnabled, activeSpeakerUserId },
|
{ pttButtonHeld, isAdmin, talkOverEnabled, activeSpeakerUserId, unmuteError },
|
||||||
setState,
|
setState,
|
||||||
] = useState(() => {
|
] = useState(() => {
|
||||||
const roomMember = groupCall.room.getMember(client.getUserId());
|
const roomMember = groupCall.room.getMember(client.getUserId());
|
||||||
|
|
@ -14,11 +14,10 @@ export function usePTT(client, groupCall, userMediaFeeds) {
|
||||||
talkOverEnabled: false,
|
talkOverEnabled: false,
|
||||||
pttButtonHeld: false,
|
pttButtonHeld: false,
|
||||||
activeSpeakerUserId: activeSpeakerFeed ? activeSpeakerFeed.userId : null,
|
activeSpeakerUserId: activeSpeakerFeed ? activeSpeakerFeed.userId : null,
|
||||||
|
unmuteError: null,
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
const [unmuteError, setUnmuteError] = useState(null);
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
function onMuteStateChanged(...args) {
|
function onMuteStateChanged(...args) {
|
||||||
const activeSpeakerFeed = userMediaFeeds.find((f) => !f.isAudioMuted());
|
const activeSpeakerFeed = userMediaFeeds.find((f) => !f.isAudioMuted());
|
||||||
|
|
@ -50,18 +49,17 @@ export function usePTT(client, groupCall, userMediaFeeds) {
|
||||||
}, [userMediaFeeds]);
|
}, [userMediaFeeds]);
|
||||||
|
|
||||||
const startTalking = useCallback(async () => {
|
const startTalking = useCallback(async () => {
|
||||||
setState((prevState) => ({ ...prevState, pttButtonHeld: true }));
|
setState((prevState) => ({ ...prevState, pttButtonHeld: true, unmuteError: null, }));
|
||||||
setUnmuteError(null);
|
|
||||||
if (!activeSpeakerUserId || isAdmin || talkOverEnabled) {
|
if (!activeSpeakerUserId || isAdmin || talkOverEnabled) {
|
||||||
if (groupCall.isMicrophoneMuted()) {
|
if (groupCall.isMicrophoneMuted()) {
|
||||||
try {
|
try {
|
||||||
await groupCall.setMicrophoneMuted(false);
|
await groupCall.setMicrophoneMuted(false);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
setUnmuteError(e);
|
setState((prevState) => ({ ...prevState, unmuteError: null, }));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, [setUnmuteError]);
|
}, [setState]);
|
||||||
|
|
||||||
const stopTalking = useCallback(() => {
|
const stopTalking = useCallback(() => {
|
||||||
setState((prevState) => ({ ...prevState, pttButtonHeld: false }));
|
setState((prevState) => ({ ...prevState, pttButtonHeld: false }));
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue