new-api/web/src/pages/Home/index.js

122 lines
5.4 KiB
JavaScript
Raw Normal View History

2023-08-14 22:16:32 +08:00
import React, {useContext, useEffect, useState} from 'react';
import {Card, Grid, Header, Segment} from 'semantic-ui-react';
import {API, showError, showNotice, timestamp2string} from '../../helpers';
import {StatusContext} from '../../context/Status';
import {marked} from 'marked';
2023-04-22 20:39:27 +08:00
const Home = () => {
2023-08-14 22:16:32 +08:00
const [statusState, statusDispatch] = useContext(StatusContext);
const [homePageContentLoaded, setHomePageContentLoaded] = useState(false);
const [homePageContent, setHomePageContent] = useState('');
2023-04-23 20:00:47 +08:00
2023-08-14 22:16:32 +08:00
const displayNotice = async () => {
const res = await API.get('/api/notice');
const {success, message, data} = res.data;
if (success) {
let oldNotice = localStorage.getItem('notice');
if (data !== oldNotice && data !== '') {
showNotice(data);
localStorage.setItem('notice', data);
}
} else {
showError(message);
}
};
2023-04-22 20:39:27 +08:00
2023-08-14 22:16:32 +08:00
const displayHomePageContent = async () => {
setHomePageContent(localStorage.getItem('home_page_content') || '');
const res = await API.get('/api/home_page_content');
const {success, message, data} = res.data;
if (success) {
let content = data;
if (!data.startsWith('https://')) {
content = marked.parse(data);
}
setHomePageContent(content);
localStorage.setItem('home_page_content', content);
} else {
showError(message);
setHomePageContent('加载首页内容失败...');
}
setHomePageContentLoaded(true);
};
2023-08-14 22:16:32 +08:00
const getStartTimeString = () => {
const timestamp = statusState?.status?.start_time;
return timestamp2string(timestamp);
};
2023-04-23 20:00:47 +08:00
2023-08-14 22:16:32 +08:00
useEffect(() => {
displayNotice().then();
displayHomePageContent().then();
}, []);
return (
<>
{
// homePageContentLoaded && homePageContent === '' ?
<>
<Segment>
<Header as='h3'>当前状态</Header>
<Grid columns={2} stackable>
<Grid.Column>
<Card fluid>
<Card.Content>
<Card.Header>GPT-3.5</Card.Header>
<Card.Meta>信息总览</Card.Meta>
<Card.Description>
<p>通道官方通道</p>
<p>状态存活</p>
<p>价格{statusState?.status?.base_price}R&nbsp;/&nbsp;</p>
</Card.Description>
</Card.Content>
</Card>
</Grid.Column>
<Grid.Column>
<Card fluid>
<Card.Content>
<Card.Header>GPT-4</Card.Header>
<Card.Meta>信息总览</Card.Meta>
<Card.Description>
<p>通道官方通道低价通道</p>
<p>
状态
{statusState?.status?.stable_price===-1?
<span style={{color:'red'}}>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
:
<span style={{color:'green'}}>&emsp;&emsp;</span>
}
{statusState?.status?.normal_price===-1?
<span style={{color:'red'}}>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
:
<span style={{color:'green'}}>&emsp;&emsp;</span>
}
</p>
<p>
价格{statusState?.status?.stable_price}R&nbsp;/&nbsp;刀|{statusState?.status?.normal_price}R&nbsp;/&nbsp;
</p>
</Card.Description>
</Card.Content>
</Card>
</Grid.Column>
</Grid>
</Segment>
{
homePageContent.startsWith('https://') ? <iframe
src={homePageContent}
style={{ width: '100%', height: '100vh', border: 'none' }}
/> : <div style={{ fontSize: 'larger' }} dangerouslySetInnerHTML={{ __html: homePageContent }}></div>
}
</>
// :
// <>
// </>
}
2023-08-14 22:16:32 +08:00
</>
);
2023-04-22 20:39:27 +08:00
};
export default Home;