mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2026-03-01 00:00:26 +00:00
Redesigned network display cards and related components for a more modern, consistent look, including improved button styles, card layouts, and responsive design. Added support for background images and dynamic theming across cards, tables, and log views. Enhanced input and select components with unified styling. Improved file table responsiveness and log display usability. Refactored OneBot API debug and navigation UI for better usability and mobile support.
118 lines
3.2 KiB
TypeScript
118 lines
3.2 KiB
TypeScript
import { Input } from '@heroui/input';
|
|
import { useEffect, useState } from 'react';
|
|
import { Controller, useForm } from 'react-hook-form';
|
|
import toast from 'react-hot-toast';
|
|
|
|
import SaveButtons from '@/components/button/save_buttons';
|
|
import PageLoading from '@/components/page_loading';
|
|
import SwitchCard from '@/components/switch_card';
|
|
|
|
import useConfig from '@/hooks/use-config';
|
|
|
|
const OneBotConfigCard = () => {
|
|
const { config, saveConfigWithoutNetwork, refreshConfig } = useConfig();
|
|
const [loading, setLoading] = useState(false);
|
|
const {
|
|
control,
|
|
handleSubmit: handleOnebotSubmit,
|
|
formState: { isSubmitting },
|
|
setValue: setOnebotValue,
|
|
} = useForm<IConfig['onebot']>({
|
|
defaultValues: {
|
|
musicSignUrl: '',
|
|
enableLocalFile2Url: false,
|
|
parseMultMsg: false,
|
|
},
|
|
});
|
|
const reset = () => {
|
|
setOnebotValue('musicSignUrl', config.musicSignUrl);
|
|
setOnebotValue('enableLocalFile2Url', config.enableLocalFile2Url);
|
|
setOnebotValue('parseMultMsg', config.parseMultMsg);
|
|
};
|
|
|
|
const onSubmit = handleOnebotSubmit(async (data) => {
|
|
try {
|
|
await saveConfigWithoutNetwork(data);
|
|
toast.success('保存成功');
|
|
} catch (error) {
|
|
const msg = (error as Error).message;
|
|
toast.error(`保存失败: ${msg}`);
|
|
}
|
|
});
|
|
|
|
const onRefresh = async (shotTip = true) => {
|
|
try {
|
|
setLoading(true);
|
|
await refreshConfig();
|
|
if (shotTip) toast.success('刷新成功');
|
|
} catch (error) {
|
|
const msg = (error as Error).message;
|
|
toast.error(`刷新失败: ${msg}`);
|
|
} finally {
|
|
setLoading(false);
|
|
}
|
|
};
|
|
|
|
useEffect(() => {
|
|
reset();
|
|
}, [config]);
|
|
|
|
useEffect(() => {
|
|
onRefresh(false);
|
|
}, []);
|
|
|
|
if (loading) return <PageLoading loading />;
|
|
|
|
return (
|
|
<>
|
|
<title>OneBot配置 - NapCat WebUI</title>
|
|
<Controller
|
|
control={control}
|
|
name='musicSignUrl'
|
|
render={({ field }) => (
|
|
<Input
|
|
{...field}
|
|
label='音乐签名地址'
|
|
placeholder='请输入音乐签名地址'
|
|
classNames={{
|
|
inputWrapper:
|
|
'bg-default-100/50 dark:bg-white/5 backdrop-blur-md border border-transparent hover:bg-default-200/50 dark:hover:bg-white/10 transition-all shadow-sm data-[hover=true]:border-default-300',
|
|
input: 'bg-transparent text-default-700 placeholder:text-default-400',
|
|
}}
|
|
/>
|
|
)}
|
|
/>
|
|
<Controller
|
|
control={control}
|
|
name='enableLocalFile2Url'
|
|
render={({ field }) => (
|
|
<SwitchCard
|
|
{...field}
|
|
description='启用本地文件到URL'
|
|
label='启用本地文件到URL'
|
|
/>
|
|
)}
|
|
/>
|
|
<Controller
|
|
control={control}
|
|
name='parseMultMsg'
|
|
render={({ field }) => (
|
|
<SwitchCard
|
|
{...field}
|
|
description='启用上报解析合并消息'
|
|
label='启用上报解析合并消息'
|
|
/>
|
|
)}
|
|
/>
|
|
<SaveButtons
|
|
onSubmit={onSubmit}
|
|
reset={reset}
|
|
isSubmitting={isSubmitting}
|
|
refresh={onRefresh}
|
|
/>
|
|
</>
|
|
);
|
|
};
|
|
|
|
export default OneBotConfigCard;
|