import { yesterday } from "@nirvana/common/helpers/dateTime"; import { AudioClip } from "@nirvana/common/models/conversation"; import moment from "moment"; import toast from "react-hot-toast"; import { useRecoilState, useRecoilValue } from "recoil"; import { allRelevantContactsAtom, allUsersConversationsAtom, audioQueueAtom, audioQueueCurrentClipSelector, selectedConvoAtom, } from "../../recoil/main"; import { MasterAvatarGroupWithUserFetch } from "../UserDetails/MasterAvatarGroup"; import { useState } from "react"; export default function TimelineAudioClip(props: { index: number; audioClip: AudioClip; convoId: string; audioClipsToPlay: AudioClip[]; }) { const relContactsMap = useRecoilValue(allRelevantContactsAtom); const userConvosMap = useRecoilValue(allUsersConversationsAtom); const audioClipUser = relContactsMap.get(props.audioClip.senderUserId); const userConvoAssoc = userConvosMap.get(props.convoId); const audioQueueCurrentClip = useRecoilValue(audioQueueCurrentClipSelector); const [audioQueue, setAudioQueue] = useRecoilState(audioQueueAtom); const [audioDuration, setAudioDuration] = useState(); const loadedMetadata = (data) => { console.log(data); // set duration }; const audio = new Audio(props.audioClip.audioDataUrl); // audio.onloadedmetadata = loadedMetadata; const playAudioClip = () => { // current audioclip included in the array of audioclipstoplay setAudioQueue((prevQueue) => { return props.audioClipsToPlay; }); }; let customClasses = "bg-slate-100 border"; if (audioQueueCurrentClip?.id == props.audioClip.id) { customClasses = "animate-pulse bg-orange-200"; } else if ( props.audioClip.createdDate > (userConvoAssoc?.lastInteractionDate || yesterday) ) { customClasses = "bg-sky-100"; } return ( {audioClipUser?.firstName + " " + audioClipUser?.lastName} {moment(props.audioClip.createdDate.toDate()).fromNow()} ); }