import React, { useEffect, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { Button, Divider, Form, Grid, Header, Message, Modal, } from 'semantic-ui-react'; import { Link } from 'react-router-dom'; import { API, showError, showSuccess, verifyJSON } from '../helpers'; import { marked } from 'marked'; const OtherSetting = () => { const { t } = useTranslation(); let [inputs, setInputs] = useState({ Footer: '', Notice: '', About: '', SystemName: '', Logo: '', HomePageContent: '', Theme: '', }); let [loading, setLoading] = useState(false); const [showUpdateModal, setShowUpdateModal] = useState(false); const [updateData, setUpdateData] = useState({ tag_name: '', content: '', }); const getOptions = async () => { const res = await API.get('/api/option/'); const { success, message, data } = res.data; if (success) { let newInputs = {}; data.forEach((item) => { if (item.key in inputs) { newInputs[item.key] = item.value; } }); setInputs(newInputs); } else { showError(message); } }; useEffect(() => { getOptions().then(); }, []); const updateOption = async (key, value) => { setLoading(true); const res = await API.put('/api/option/', { key, value, }); const { success, message } = res.data; if (success) { setInputs((inputs) => ({ ...inputs, [key]: value })); } else { showError(message); } setLoading(false); }; const handleInputChange = async (e, { name, value }) => { setInputs((inputs) => ({ ...inputs, [name]: value })); }; const submitNotice = async () => { await updateOption('Notice', inputs.Notice); }; const submitSystemName = async () => { await updateOption('SystemName', inputs.SystemName); }; const submitTheme = async () => { await updateOption('Theme', inputs.Theme); }; const submitLogo = async () => { await updateOption('Logo', inputs.Logo); }; const submitAbout = async () => { await updateOption('About', inputs.About); }; const submitOption = async (key) => { await updateOption(key, inputs[key]); }; const openGitHubRelease = () => { window.location = 'https://github.com/songquanpeng/one-api/releases/latest'; }; const checkUpdate = async () => { const res = await API.get( 'https://api.github.com/repos/songquanpeng/one-api/releases/latest' ); const { tag_name, body } = res.data; if (tag_name === process.env.REACT_APP_VERSION) { showSuccess(`已是最新版本:${tag_name}`); } else { setUpdateData({ tag_name: tag_name, content: marked.parse(body), }); setShowUpdateModal(true); } }; return (
{t('setting.other.notice.title')}
{t('setting.other.notice.buttons.save')}
{t('setting.other.system.title')}
{t('setting.other.system.buttons.save_name')} {t('setting.other.system.theme.title')}( {t('setting.other.system.theme.link')} ) } placeholder={t('setting.other.system.theme.placeholder')} value={inputs.Theme} name='Theme' onChange={handleInputChange} /> {t('setting.other.system.buttons.save_theme')} {t('setting.other.system.buttons.save_logo')}
{t('setting.other.content.title')}
submitOption('HomePageContent')}> {t('setting.other.content.buttons.save_homepage')} {t('setting.other.content.buttons.save_about')} {t('setting.other.copyright.notice')} submitOption('Footer')}> {t('setting.other.content.buttons.save_footer')}
setShowUpdateModal(false)} onOpen={() => setShowUpdateModal(true)} open={showUpdateModal} > 新版本:{updateData.tag_name}