import { Input } from '@heroui/input'; import { useLocalStorage } from '@uidotdev/usehooks'; import { useEffect } from 'react'; import { Controller, useForm } from 'react-hook-form'; import toast from 'react-hot-toast'; import key from '@/const/key'; import SaveButtons from '@/components/button/save_buttons'; import FileInput from '@/components/input/file_input'; import ImageInput from '@/components/input/image_input'; import useMusic from '@/hooks/use-music'; import { siteConfig } from '@/config/site'; import FileManager from '@/controllers/file_manager'; const WebUIConfigCard = () => { const { control, handleSubmit: handleWebuiSubmit, formState: { isSubmitting }, setValue: setWebuiValue, } = useForm({ defaultValues: { background: '', musicListID: '', customIcons: {}, }, }); const [b64img, setB64img] = useLocalStorage(key.backgroundImage, ''); const [customIcons, setCustomIcons] = useLocalStorage>( key.customIcons, {} ); const { setListId, listId } = useMusic(); const reset = () => { setWebuiValue('musicListID', listId); setWebuiValue('customIcons', customIcons); setWebuiValue('background', b64img); }; const onSubmit = handleWebuiSubmit((data) => { try { setListId(data.musicListID); setCustomIcons(data.customIcons); setB64img(data.background); toast.success('保存成功'); } catch (error) { const msg = (error as Error).message; toast.error(`保存失败: ${msg}`); } }); useEffect(() => { reset(); }, [listId, customIcons, b64img]); return ( <> WebUI配置 - NapCat WebUI
WebUI字体
此项不需要手动保存,上传成功后需清空网页缓存并刷新 { try { await FileManager.uploadWebUIFont(file); toast.success('上传成功'); setTimeout(() => { window.location.reload(); }, 1000); } catch (error) { toast.error('上传失败: ' + (error as Error).message); } }} onDelete={async () => { try { await FileManager.deleteWebUIFont(); toast.success('删除成功'); setTimeout(() => { window.location.reload(); }, 1000); } catch (error) { toast.error('删除失败: ' + (error as Error).message); } }} />
WebUI音乐播放器
( )} />
背景图
} />
自定义图标
{siteConfig.navItems.map((item) => ( } /> ))}
); }; export default WebUIConfigCard;