import { Badge } from "@/components/bs-ui/badge"; import { Button } from "@/components/bs-ui/button"; import { getChatOnlineApi } from "@/controllers/API/assistant"; import { useContext, useEffect, useMemo, useRef, useState } from "react"; import { useNavigate } from "react-router-dom"; import { SearchInput } from "@/components/bs-ui/input"; import { Sheet, SheetContent, SheetDescription, SheetTitle, SheetTrigger } from "@/components/bs-ui/sheet"; import CardComponent, { TitleIconBg } from "@/components/bs-comp/cardComponent"; import { SkillIcon } from "@/components/bs-icons/skill"; import { AssistantIcon } from "@/components/bs-icons/assistant"; import { useTranslation } from "react-i18next"; import borderR from "../../../assets/npc/border-r.png"; import { SpotlightCard } from "@lobehub/ui"; import { Flexbox } from 'react-layout-kit'; import robot from "../../../assets/robot.png"; import robot2 from "../../../assets/robot2.png"; import robot3 from "../../../assets/robot3.png"; import zidingyi1 from "../../../assets/npc/zidingyi1.png"; import zidingyi2 from "../../../assets/npc/zidingyi2.png"; import npcIcon from "../../../assets/npc/npcIcon.png"; import nengliIcon from "../../../assets/npc/nengliIcon.png"; import biaoqianPaixu from "../../../assets/chat/biaoqian-paixu.png"; import sousuo from "../../../assets/npc/sousuo.png"; import shengQue from "../../../assets/chat/shengQue.png"; import { useDebounce } from "@/util/hook"; import LoadMore from "@/components/bs-comp/loadMore"; import { userContext } from "@/contexts/userContext"; import { getHomeLabelApi } from "@/controllers/API/label"; import MarkLabel from "@/pages/ChatAppPage/components/MarkLabel"; export default function HomePage({ onSelect }) { const { t } = useTranslation() const { user } = useContext(userContext) const chatListRef = useRef([]) const navigate = useNavigate() const [labels, setLabels] = useState([]) const [open, setOpen] = useState(false) const pageRef = useRef(1) const [options, setOptions] = useState([]) const searchRef = useRef('') const [flag, setFlag] = useState(null) // 解决筛选之后再次发起请求覆盖筛选数据 const [keyword, setKeyword] = useState(' ') const allDataRef = useRef([]) const [markLabelOpen, setMarkLabelOpen] = useState(false) const loadData = (more = false) => { getChatOnlineApi(pageRef.current, searchRef.current, -1).then((res: any) => { setFlag(true) chatListRef.current = res setOptions(more ? [...options, ...res] : res) }) } useEffect(() => { debounceLoad() getHomeLabelApi().then((res: any) => { setLabels(res.map(d => ({ label: d.name, value: d.id, selected: true }))) }) }, []) const debounceLoad = useDebounce(loadData, 600, false) const handleSearch = (e) => { pageRef.current = 1 searchRef.current = e.target.value debounceLoad() } const handleClose = async (bool) => { const newHome = await getHomeLabelApi() // @ts-ignore setLabels(newHome.map(d => ({ label: d.name, value: d.id, selected: true }))) setMarkLabelOpen(bool) } const [chooseId, setChooseId] = useState() // 筛选项样式变化 const handleTagSearch = (id) => { setChooseId(id) setFlag(false) pageRef.current = 1 getChatOnlineApi(pageRef.current, '', id).then((res: any) => { setOptions(res) }) } const handleLoadMore = async () => { pageRef.current++ await debounceLoad(true) } const render = (item: any) => ( { onSelect(item); setOpen(false) }}>

{item.name}

{item.desc}

{item.flow_type === 'flow' ? '能力' : 'NPC'}
); return
e.stopPropagation()}> {/*
*/}
{/* 选择对话 选择一个您想使用的上线NPC或能力 */} {/* setKeyword(e.target.value)} /> */}

选择对话

选择一个您想使用的上线NPC或能力

{/* @ts-ignore */} {user.role === 'admin' && setMarkLabelOpen(true)} />} {/* */}
{ setChooseId(null); loadData(false) }}>全部
{ labels.map((l, index) => index <= 11 &&
handleTagSearch(l.value)}>{l.label}
) }
{options.length ? :

未找到您搜索的「NPC」或「能力」

} {flag && }
}