const Think = ({ closedMatch, openMatch, think_content, ThinkComponent }: ThinkProps) => {
const [status, setStatus] = useState<ThinkStatus>(ThinkStatus.completed)
const match = useMemo(() => {
return openMatch || closedMatch
}, [openMatch, closedMatch])
useEffect(() => {
if (openMatch) {
setStatus(ThinkStatus.thinking)
}
}, [openMatch])
useEffect(() => {
if (closedMatch) {
setStatus(ThinkStatus.completed)
}
}, [closedMatch])
useEffect(() => {
EE.on(ThinkEvent, ({ thinkStatus }: { thinkStatus: ThinkStatus; }) => {
if (closedMatch) {
setStatus(ThinkStatus.completed)
return
}
setStatus(thinkStatus)
})
return () => {
EE.off(ThinkEvent)
}
}, [status])
return <>{match && <ThinkComponent think_content={think_content} status={status} />}</>
}