import React, { useEffect } from 'react'; import { request } from '../../request'; import { useAsyncRequest, useEditValue, Button, Input, Spin, Message, Form, Upload, useTranslation, Card, } from 'tushan'; import { IconCheck, IconClose, IconDelete } from 'tushan/icon'; import { TailchatImage } from '../../components/TailchatImage'; /** * Tailchat 系统设置 */ export const SystemConfig: React.FC = React.memo(() => { const [{ value: config = {}, loading, error }, fetchConfig] = useAsyncRequest( async () => { const { data } = await request.get('/config/client'); return data.config ?? {}; } ); const { t } = useTranslation(); useEffect(() => { fetchConfig(); }, []); const [serverName, setServerName, saveServerName] = useEditValue( config?.serverName, async (val) => { if (val === config?.serverName) { return; } try { await request.patch('/config/client', { key: 'serverName', value: val, }); fetchConfig(); Message.success('Success'); } catch (err) { console.log(err); Message.error(String(err)); } } ); const [{}, handleChangeServerEntryImage] = useAsyncRequest( async (file: File | null) => { if (file) { const formdata = new FormData(); formdata.append('file', file); const { data } = await request.put('/file/upload', formdata, { headers: { 'Content-Type': 'multipart/form-data', }, }); const fileInfo = data.files[0]; if (!fileInfo) { throw new Error('not get file'); } const url = fileInfo.url; await request.patch('/config/client', { key: 'serverEntryImage', value: url, }); fetchConfig(); } else { // delete await request.patch('/config/client', { key: 'serverEntryImage', value: '', }); fetchConfig(); } } ); if (loading) { return ; } if (error) { console.log('error', error); return
{String(error)}
; } return (
{config.uploadFileLimit} {config.emailVerification ? : } {!config.disableGuestLogin ? : } {!config.disableUserRegister ? : } {!config.disableCreateGroup ? : } setServerName(val)} onBlur={() => saveServerName()} placeholder="Tailchat" />
{config?.serverEntryImage ? (
) : ( { handleChangeServerEntryImage(file.originFile); }} /> )}
); }); SystemConfig.displayName = 'SystemConfig';