import { Button } from '@heroui/button'; import { Tooltip } from '@heroui/tooltip'; import { useLocalStorage } from '@uidotdev/usehooks'; import { useRequest } from 'ahooks'; import clsx from 'clsx'; import toast from 'react-hot-toast'; import { IoMdQuote } from 'react-icons/io'; import { IoCopy, IoRefresh } from 'react-icons/io5'; import key from '@/const/key'; import { request } from '@/utils/request'; import PageLoading from './page_loading'; export default function Hitokoto () { const { data: dataOri, error, loading, run, } = useRequest(() => request.get('https://hitokoto.152710.xyz/'), { pollingInterval: 10000, throttleWait: 1000, }); const backupData = { hitokoto: '凡是过往,皆为序章。', from: '暴风雨', from_who: '莎士比亚', }; const data = dataOri?.data || (error ? backupData : undefined); const [backgroundImage] = useLocalStorage(key.backgroundImage, ''); const hasBackground = !!backgroundImage; const onCopy = () => { try { const text = `${data?.hitokoto} —— ${data?.from} ${data?.from_who}`; navigator.clipboard.writeText(text); toast.success('复制成功'); } catch (_error) { toast.error('复制失败, 请手动复制'); } }; return (
{loading && !data && } {data && ( <>
" {data?.hitokoto} "
—— {data?.from} {data?.from_who && {data?.from_who}}
)}
); }