import { useTaskStore } from '@/store/taskStore' import { ScrollArea } from '@/components/ui/scroll-area.tsx' import { Badge } from '@/components/ui/badge.tsx' import { cn } from '@/lib/utils.ts' import { Trash } from 'lucide-react' import { Button } from '@/components/ui/button.tsx' import PinyinMatch from 'pinyin-match' import Fuse from 'fuse.js' import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from '@/components/ui/tooltip.tsx' import LazyImage from "@/components/LazyImage.tsx"; import {FC, useState, useEffect, useMemo} from 'react' interface NoteHistoryProps { onSelect: (taskId: string) => void selectedId: string | null } const NoteHistory: FC = ({ onSelect, selectedId }) => { const tasks = useTaskStore(state => state.tasks) const removeTask = useTaskStore(state => state.removeTask) // 确保baseURL没有尾部斜杠 const baseURL = (String(import.meta.env.VITE_API_BASE_URL || 'api')).replace(/\/$/, '') const [rawSearch, setRawSearch] = useState('') const [search, setSearch] = useState('') const fuse = useMemo(() => new Fuse(tasks, { keys: ['audioMeta.title'], threshold: 0.4 // 匹配精度(越低越严格) }), [tasks]) useEffect(() => { const timer = setTimeout(() => { if (rawSearch === '') return setSearch(rawSearch) }, 300) // 300ms 防抖 return () => clearTimeout(timer) }, [rawSearch]) const filteredTasks = search.trim() ? fuse.search(search).map(result => result.item) : tasks if (filteredTasks.length === 0) { return ( <>
setSearch(e.target.value)} />

暂无记录

) } return ( <>
setSearch(e.target.value)} />
{filteredTasks.map(task => (
onSelect(task.id)} className={cn( 'flex cursor-pointer flex-col rounded-md border border-neutral-200 p-3', selectedId === task.id && 'border-primary bg-primary-light' )} >
{/* 封面图 */} {task.platform === 'local' ? ( 封面 ) : ( )} {/* 标题 + 状态 */}
{task.audioMeta.title || '未命名笔记'}

{task.audioMeta.title || '未命名笔记'}

{task.status === 'SUCCESS' && (
已完成
)} {task.status !== 'SUCCESS' && task.status !== 'FAILED' ? (
等待中
) : ( <> )} {task.status === 'FAILED' && (
失败
)}

删除

{/*
*/} {/* {task.status === 'SUCCESS' && 已完成}*/} {/* {task.status !== 'SUCCESS' && task.status === 'FAILED' && (*/} {/* 等待中*/} {/* )}*/} {/* {task.status === 'FAILED' && 失败}*/} {/*
*/}
))}
) } export default NoteHistory