fix: PTT input guard, listener stability, focus restore mute, single badge

This commit is contained in:
root
2026-05-14 20:14:06 -04:00
parent 20abfc0342
commit 9f6220b1bb
2 changed files with 32 additions and 34 deletions
+1 -19
View File
@@ -5,8 +5,6 @@ import { StatusDivider } from './components';
import { CallEmbed, useCallControlState } from '../../plugins/call';
import { AsyncStatus, useAsyncCallback } from '../../hooks/useAsyncCallback';
import { callEmbedAtom } from '../../state/callEmbed';
import { useSetting } from '../../state/hooks/settings';
import { settingsAtom } from '../../state/settings';
type MicrophoneButtonProps = {
enabled: boolean;
@@ -159,10 +157,6 @@ export function CallControl({
}) {
const { microphone, video, sound, screenshare } = useCallControlState(callEmbed.control);
const setCallEmbed = useSetAtom(callEmbedAtom);
const [pttMode] = useSetting(settingsAtom, 'pttMode');
const [pttKey] = useSetting(settingsAtom, 'pttKey');
const pttKeyLabel = pttMode ? (pttKey === 'Space' ? 'SPACE' : pttKey.replace('Key', '').replace('Digit', '')) : '';
const [hangupState, hangup] = useAsyncCallback(
useCallback(() => callEmbed.hangup(), [callEmbed])
);
@@ -180,22 +174,10 @@ export function CallControl({
return (
<Box shrink="No" alignItems="Center" gap="300">
<Box alignItems="Inherit" gap="200">
{pttMode && (
<Chip
variant={microphone ? 'Success' : 'Warning'}
fill="Soft"
radii="400"
size="300"
outlined
style={{ pointerEvents: 'none', fontWeight: 700 }}
>
<Text size="T200">{microphone ? '● Live' : `PTT ${pttKeyLabel}`}</Text>
</Chip>
)}
<MicrophoneButton
enabled={microphone}
onToggle={() => callEmbed.control.toggleMicrophone()}
disabled={!callJoined || pttMode}
disabled={!callJoined}
/>
<SoundButton
enabled={sound}