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