From 643383cf5797f87a97003f1862fe7281991e925f Mon Sep 17 00:00:00 2001 From: Arjun Patel Date: Fri, 21 Jan 2022 19:21:11 -0800 Subject: [PATCH] nice touchups and fixing audio playing issues --- components/AnnouncementCard.tsx | 2 +- components/Dashboard/Announcements.tsx | 20 ++++++++++----- components/Dashboard/Rooms.tsx | 1 - contexts/keyboardContext.tsx | 34 +++++++++++++++++++++++--- 4 files changed, 45 insertions(+), 12 deletions(-) diff --git a/components/AnnouncementCard.tsx b/components/AnnouncementCard.tsx index dd9ca45..671d75c 100644 --- a/components/AnnouncementCard.tsx +++ b/components/AnnouncementCard.tsx @@ -69,7 +69,7 @@ export default function AnnouncementCard(props: IAnnouncementCardProps) { } return ( - + diff --git a/components/Dashboard/Announcements.tsx b/components/Dashboard/Announcements.tsx index ba923b1..d78bebe 100644 --- a/components/Dashboard/Announcements.tsx +++ b/components/Dashboard/Announcements.tsx @@ -17,6 +17,7 @@ import Announcement, { AnnouncementState } from "../../models/announcement"; import { getTime } from "../../helpers/dateTime"; import AnnouncementCard from "../AnnouncementCard"; import { Dropdown, Menu, Radio, Tooltip } from "antd"; +import { useKeyboardContext } from "../../contexts/keyboardContext"; // for query const yesterday = new Date(); @@ -27,6 +28,7 @@ const db = getFirestore(); export default function Announcements() { const { currUser } = useAuth(); const { team } = useTeamDashboardContext(); + const { isRecordingAnnouncement } = useKeyboardContext(); const [annMap, setAnnMap] = useState>( new Map() @@ -125,8 +127,12 @@ export default function Announcements() { ANNOUNCEMENTS @@ -163,15 +169,17 @@ export default function Announcements() { + + + {/* - */} -
+
{getTabContent()}
diff --git a/components/Dashboard/Rooms.tsx b/components/Dashboard/Rooms.tsx index 9886fcf..3fd1cff 100644 --- a/components/Dashboard/Rooms.tsx +++ b/components/Dashboard/Rooms.tsx @@ -124,7 +124,6 @@ export default function DashboardRoom() { updatedRoom.id = change.doc.id; if (change.type === "added" || change.type === "modified") { - console.log("New or updated room: ", updatedRoom); // update rooms map setRoomsMap((prevMap) => { return new Map(prevMap.set(updatedRoom.id, updatedRoom)); diff --git a/contexts/keyboardContext.tsx b/contexts/keyboardContext.tsx index 3e92d57..80db2bd 100644 --- a/contexts/keyboardContext.tsx +++ b/contexts/keyboardContext.tsx @@ -139,14 +139,38 @@ export default function KeyboardContextProvider({ children }) { // manage audio queue useEffect(() => { // every time queue changes, - // setPlayerSrc as the next item if there is any + // setPlayerSrc as the next item if there is any to play it if (audioQueue && audioQueue.length > 0) { toast("Adding Message to Queue"); - setPlayerSrc(audioQueue[0]); + + // todo: edge case, if it's the same link again, then still play it somehow + if (playerSrc == audioQueue[0]) { + // play empty one and then add the next audio file + setPlayerSrc(""); + + setTimeout(() => { + setPlayerSrc(audioQueue[0]); + }, 1000); + } else { + setPlayerSrc(audioQueue[0]); + } + } + + if (!audioQueue || audioQueue.length == 0) { + setPlayerSrc(null); } }, [audioQueue]); + // show toast when recording + useEffect(() => { + if (isRecordingAnnouncement || isRecording) { + toast.loading("Recording..."); + } else { + toast.dismiss(); + } + }, [isRecording, isRecordingAnnouncement]); + const value: KeyboardContextInterface = { selectedTeammate, selectTeamMember, @@ -267,7 +291,8 @@ export default function KeyboardContextProvider({ children }) { recorder .start() .then(() => { - toast.success("started recording"); + // toast.success("started recording"); + console.log("recording started"); }) .catch((e) => toast.error("there was a problem in starting your recording") @@ -502,7 +527,8 @@ export default function KeyboardContextProvider({ children }) { function handleResetView() { setSelectedTeamMember(null); setShowModalType(ShowModalType.na); - setPlayerSrc(null); + + setAudioQueue([]); } // IMPORTANT: shortcut handlers need to be updated as the function has to have the fresh state