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';
const Home = () => {
const [statusState, statusDispatch] = useContext(StatusContext);
const [homePageContentLoaded, setHomePageContentLoaded] = useState(false);
const [homePageContent, setHomePageContent] = useState('');
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 !== '') {
const htmlNotice = marked(data);
showNotice(htmlNotice, true);
localStorage.setItem('notice', data);
}
} else {
showError(message);
}
};
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('Failed to load homepage content...');
}
setHomePageContentLoaded(true);
};
const getStartTimeString = () => {
const timestamp = statusState?.status?.start_time;
return timestamp2string(timestamp);
};
useEffect(() => {
displayNotice().then();
displayHomePageContent().then();
}, []);
return (
<>
{
homePageContentLoaded && homePageContent === '' ? <>
Name:{statusState?.status?.system_name} Version:{statusState?.status?.version ? statusState?.status?.version : "unknown"}
Source code:
https://github.com/songquanpeng/one-api
Startup time:{getStartTimeString()}
Email verification:
{statusState?.status?.email_verification === true
? 'Enabled'
: 'Not enabled'}
GitHub Authentication:
{statusState?.status?.github_oauth === true
? 'Enabled'
: 'Not enabled'}
WeChat Authentication:
{statusState?.status?.wechat_login === true
? 'Enabled'
: 'Not enabled'}
Turnstile user verification:
{statusState?.status?.turnstile_check === true
? 'Enabled'
: 'Not enabled'}