()
| 40 | }); |
| 41 | |
| 42 | export function useMessageParser() { |
| 43 | const [parsedMessages, setParsedMessages] = useState<{ [key: number]: string }>({}); |
| 44 | |
| 45 | const parseMessages = useCallback((messages: Message[], isLoading: boolean) => { |
| 46 | let reset = false; |
| 47 | |
| 48 | if (import.meta.env.DEV && !isLoading) { |
| 49 | reset = true; |
| 50 | messageParser.reset(); |
| 51 | } |
| 52 | |
| 53 | for (const [index, message] of messages.entries()) { |
| 54 | if (message.role === 'assistant') { |
| 55 | const newParsedContent = messageParser.parse(message.id, message.content); |
| 56 | |
| 57 | setParsedMessages((prevParsed) => ({ |
| 58 | ...prevParsed, |
| 59 | [index]: !reset ? (prevParsed[index] || '') + newParsedContent : newParsedContent, |
| 60 | })); |
| 61 | } |
| 62 | } |
| 63 | }, []); |
| 64 | |
| 65 | return { parsedMessages, parseMessages }; |
| 66 | } |
no test coverage detected