import React, { useState, useEffect } from 'react'; import { useTranslation } from 'react-i18next'; import './styles/index.scss'; import { Icon, IconTypes } from '../Icon'; import { Avatar, defaultGroupAvatarWork, defaultUserAvatar } from '../Avatar'; import { Switch } from '../Switch'; import { useTUIKitContext } from '../../context'; import { getMessageProfile } from '../ConversationPreview/utils'; import { useConversationUpdate } from '../TUIConversationList/hooks/useConversationUpdate'; import { useConversation } from '../../hooks'; export function TUIManage() { const { t } = useTranslation(); const [conversation, setConversation] = useState(null); const [profile, setProfile] = useState(null); const [isPinned, setIsPinned] = useState(false); const [forceUpdateCount, setForceUpdateCount] = useState(0); const { conversation: activeConversation, setActiveConversation, chat, TUIManageShow, setTUIManageShow, } = useTUIKitContext('TUIManage'); useConversationUpdate(null, () => { setForceUpdateCount((count) => count + 1); }); const { pinConversation, deleteConversation } = useConversation(chat); const pinChatChange = (e) => { setIsPinned(e.target.checked); pinConversation({ conversationID: conversation.conversationID, isPinned: e.target.checked, }); }; const handleDelete = () => { deleteConversation(conversation.conversationID); setActiveConversation(null); }; const close = () => { setTUIManageShow(false); }; useEffect(() => { setConversation(activeConversation); setProfile(getMessageProfile(activeConversation)); setIsPinned(activeConversation ? activeConversation.isPinned : false); }, [activeConversation, forceUpdateCount]); return TUIManageShow && activeConversation && (