import Conversation from "@nirvana/common/models/conversation"; import { Avatar, Tooltip } from "antd"; import moment from "moment"; import { FaCircle, FaUser, FaRocket, FaRegClock, FaCheck, FaAngleRight, } from "react-icons/fa"; import { useRecoilValue } from "recoil"; import { allRelevantConversationsAtom, allUsersConversationsAtom, checkIncomingMessageSelector, } from "../../recoil/main"; import { MasterAvatarGroupWithUserFetch } from "../UserDetails/MasterAvatarGroup"; import { FaPlay } from "react-icons/fa"; import { ConversationMemberState } from "../../../common/models/conversation"; import { conversationService } from "@nirvana/common/services"; import { useAuth } from "../../contexts/authContext"; import toast from "react-hot-toast"; export default function ConversationFullRow(props: { conversation: Conversation; }) { const { currUser } = useAuth(); const usersConvosMap = useRecoilValue(allUsersConversationsAtom); let quickUpdateText = ""; if (props.conversation.cachedAudioClips?.length > 0) { quickUpdateText = `${props.conversation.cachedAudioClips[0].senderUserId} spoke just now...`; } // check if I am outdate on a certain conversation const isNewIncoming = useRecoilValue( checkIncomingMessageSelector(props.conversation.id) ); const handleOrganizeConversation = async ( toState: ConversationMemberState ) => { try { // use service to make change in database which will change local data await conversationService.updateUserConvoRelationship( currUser!.uid, props.conversation.id, toState ); toast.success("Moved conversation to " + toState); } catch (error) { console.error(error); toast.error("Problem in moving conversation"); } }; return ( {isNewIncoming && ( )} {props.conversation.name} {quickUpdateText} {moment(props.conversation.lastActivityDate.toDate()).fromNow()} {/* actions */} { e.stopPropagation(); handleOrganizeConversation(ConversationMemberState.priority); }} className="p-2 rounded-full hover:cursor-pointer hover:bg-slate-200" > { e.stopPropagation(); handleOrganizeConversation(ConversationMemberState.later); }} className="p-2 rounded-full hover:cursor-pointer hover:bg-slate-200" > { e.stopPropagation(); handleOrganizeConversation(ConversationMemberState.done); }} className="p-2 rounded-full hover:cursor-pointer hover:bg-slate-200" > ); }