From 1244b71b15f68b96f12c28aa4d5840ba3bff90dc Mon Sep 17 00:00:00 2001 From: talksik Date: Mon, 30 May 2022 09:35:30 -0500 Subject: [PATCH] showing selected in footer --- .../desktop/src/components/FooterControls.tsx | 0 packages/desktop/src/components/Terminal.tsx | 370 +++++++++++------- 2 files changed, 219 insertions(+), 151 deletions(-) create mode 100644 packages/desktop/src/components/FooterControls.tsx diff --git a/packages/desktop/src/components/FooterControls.tsx b/packages/desktop/src/components/FooterControls.tsx new file mode 100644 index 0000000..e69de29 diff --git a/packages/desktop/src/components/Terminal.tsx b/packages/desktop/src/components/Terminal.tsx index e458205..fb1dce7 100644 --- a/packages/desktop/src/components/Terminal.tsx +++ b/packages/desktop/src/components/Terminal.tsx @@ -23,6 +23,7 @@ import { Fab, Switch, Dialog, + AvatarGroup, } from '@mui/material'; import { blueGrey } from '@mui/material/colors'; import { FiZap, FiHeadphones, FiLogOut, FiMonitor, FiSun } from 'react-icons/fi'; @@ -51,6 +52,7 @@ import MainPanel from './MainPanel'; import { ConversationList } from './ConversationList'; import NewConversationDialog from './NewConversationDialog'; import { createGroupConversation } from '../firebase/firestore'; +import ConversationLabel from '../subcomponents/ConversationLabel'; type ConversationMap = { [conversationId: string]: Conversation; }; @@ -381,6 +383,11 @@ export function TerminalProvider({ children }: { children?: React.ReactNode }) { navigator.mediaDevices .getUserMedia({ audio: true }) .then((localUserMedia: MediaStream) => { + if (!localUserMedia.active) { + enqueueSnackbar('Make sure your microphone is enabled!', { variant: 'error' }); + return; + } + localUserMedia.getTracks().forEach((track) => track.stop()); setUserAudioStream(localUserMedia); @@ -415,7 +422,7 @@ export function TerminalProvider({ children }: { children?: React.ReactNode }) { } if (!userAudioStream || !mediaRecorder) { - enqueueSnackbar('Check your audio mic permissions in preferences!!', { variant: 'error' }); + enqueueSnackbar('Configure your audio!!', { variant: 'error' }); handleAskForMicrophonePermissions(); return; @@ -423,12 +430,22 @@ export function TerminalProvider({ children }: { children?: React.ReactNode }) { // prevent while delaying stopping // ? better to just start after 200 ms as put below for the delay of stopping recording? - if (mediaRecorder.state === 'recording') return; + if (mediaRecorder.state === 'recording') { + enqueueSnackbar(`Please don't spam!!!`, { variant: 'warning' }); + return; + } - enqueueSnackbar('started recording'); - setIsCloudDoingMagic(true); - mediaRecorder.start(); - setIsUserSpeaking(true); + try { + enqueueSnackbar('started recording'); + setIsCloudDoingMagic(true); + mediaRecorder.start(); + setIsUserSpeaking(true); + } catch (error) { + console.error(error); + enqueueSnackbar('Problem in your audio!!!', { variant: 'error' }); + setIsCloudDoingMagic(false); + setIsUserSpeaking(false); + } }, [ selectedConversation, setIsUserSpeaking, @@ -564,162 +581,213 @@ export function TerminalProvider({ children }: { children?: React.ReactNode }) { handleEscape, }} > - - {/* side panel */} - - - - - {searchVal ? ( - - ) : ( - - )} - - - {/* footer controls */} - + + {/* side panel */} + - - - - + - - - - - - - - - - - - - - - {/* todo: add a third mode which is when toggle broadcasting */} - {selectedConversation ? ( - - - - - + + {searchVal ? ( + ) : ( - - - - - + )} - + + - - - - - - Logout - - - + - - + {/* footer controls */} + + + + + + + + + + + + + + + + + + + + + {selectedConversation && ( + + + + + + + + + + + + {selectedConversation.userCache?.map((conversationUser, index) => ( + + ))} + + + + )} + + {/* todo: add a third mode which is when toggle broadcasting */} + {selectedConversation ? ( + + + + + + ) : ( + + + + + + )} + + + + + + + + Logout + + + + {children}