import React, { useEffect, useState } from 'react'; import { TUIKit, TUIConversationList, TUIChat, TUIChatHeader, TUIMessageList, TUIMessageInput, TUIProfile, TUIConversation, TUIManage, TUIContact, TUIContactInfo, i18next, t, } from '@tencentcloud/chat-uikit-react'; import TencentCloudChat, { ChatSDK } from '@tencentcloud/chat'; import TIMUploadPlugin from 'tim-upload-plugin'; import '@tencentcloud/chat-uikit-react/dist/cjs/index.css'; import './style.scss'; import chats from './assets/image/chats.svg'; import chats_selected from './assets/image/chats-selected.svg'; import contacts from './assets/image/contacts.svg'; import contacts_selected from './assets/image/contacts-selected.svg'; import languageIcon from './assets/image/language.svg'; import { sampleResources } from '../locales/index'; import { genTestUserSig } from '../debug/GenerateTestUserSig' // 追加 sample 语言包 if (i18next.language === 'zh') { i18next.addResources(i18next.language, 'translation', sampleResources?.zh); } else { i18next.addResources(i18next.language, 'translation', sampleResources?.en); } const init = async ():Promise => { return new Promise((resolve, reject) => { const userID = `test-${Math.ceil(Math.random() * 10000)}`; console.warn('your userID ->', userID); const chat = TencentCloudChat.create({ SDKAppID: genTestUserSig(userID).SDKAppID }); chat?.registerPlugin({ 'tim-upload-plugin': TIMUploadPlugin }); const onReady = () => { resolve(chat); }; chat.on(TencentCloudChat.EVENT.SDK_READY, onReady); chat.login({ userID, userSig: genTestUserSig(userID).userSig, }); }); } export default function SampleChat() { const [moduleValue, setModuleValue] = useState("chats"); const [chat, setChat] = useState(); const [currentLng, setCurrentLng] = useState({ // 支持切换 zh / en,默认支持 en label: 'English', value: 'en' }); const [isShowLngPop, setShowLngPop] = useState(false); const tabbarList = [ { id: 1, name: 'chats', icon: chats, selectedIcon: chats_selected, value: 'chats' }, { id: 2, name: 'contacts', icon: contacts, selectedIcon: contacts_selected, value: 'contacts' } ]; const languageList = [ { label: '简体中文', value: 'zh' }, { label: 'English', value: 'en' } ] useEffect(() => { // 默认支持 en (async ()=>{ const chat = await init() setChat(chat) })() }, []) const switchTabbar = (value: string) => { setModuleValue(value); }; const changeLanguage = (lng: any) => { setCurrentLng(lng); i18next.changeLanguage(lng.value); setShowLngPop(!isShowLngPop); }; return (
setShowLngPop(!isShowLngPop)} >

{currentLng.label}

{isShowLngPop && (
{" "} {languageList.map((item, index) => { const key = `${item.value}${index}`; return (

{ changeLanguage(item); }} > {item.label}

); })}
)}
{/* 左侧 list 显示 */}
{tabbarList.map((item: any) => { return (
{ switchTabbar(item.value); }} >

{t(item.name)}

); })}
{moduleValue === "chats" && ( )} {moduleValue === "contacts" && }
{/* 右侧对应内容显示 */} {moduleValue === "chats" && ( <> )} {moduleValue === "contacts" && ( { setModuleValue("chats"); }} > )}
); }