| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| import React from 'react'; |
| import { useTokenKeys } from '../../hooks/chat/useTokenKeys'; |
| import { Spin } from '@douyinfe/semi-ui'; |
| import { useParams } from 'react-router-dom'; |
| import { useTranslation } from 'react-i18next'; |
|
|
| const ChatPage = () => { |
| const { t } = useTranslation(); |
| const { id } = useParams(); |
| const { keys, serverAddress, isLoading } = useTokenKeys(id); |
|
|
| const comLink = (key) => { |
| |
| if (!serverAddress || !key) return ''; |
| let link = ''; |
| if (id) { |
| let chats = localStorage.getItem('chats'); |
| if (chats) { |
| chats = JSON.parse(chats); |
| if (Array.isArray(chats) && chats.length > 0) { |
| for (let k in chats[id]) { |
| link = chats[id][k]; |
| link = link.replaceAll( |
| '{address}', |
| encodeURIComponent(serverAddress), |
| ); |
| link = link.replaceAll('{key}', 'sk-' + key); |
| } |
| } |
| } |
| } |
| return link; |
| }; |
|
|
| const iframeSrc = keys.length > 0 ? comLink(keys[0]) : ''; |
|
|
| return !isLoading && iframeSrc ? ( |
| <iframe |
| src={iframeSrc} |
| style={{ |
| width: '100%', |
| height: 'calc(100vh - 64px)', |
| border: 'none', |
| marginTop: '64px', |
| }} |
| title='Token Frame' |
| allow='camera;microphone' |
| /> |
| ) : ( |
| <div className='fixed inset-0 w-screen h-screen flex items-center justify-center bg-white/80 z-[1000] mt-[60px]'> |
| <div className='flex flex-col items-center'> |
| <Spin size='large' spinning={true} tip={null} /> |
| <span |
| className='whitespace-nowrap mt-2 text-center' |
| style={{ color: 'var(--semi-color-primary)' }} |
| > |
| {t('正在跳转...')} |
| </span> |
| </div> |
| </div> |
| ); |
| }; |
|
|
| export default ChatPage; |
|
|