diff --git a/src/components/MessageBox.tsx b/src/components/MessageBox.tsx index 4473c3b..4617103 100644 --- a/src/components/MessageBox.tsx +++ b/src/components/MessageBox.tsx @@ -48,6 +48,7 @@ const MessageBox = ({ const [speechMessage, setSpeechMessage] = useState(message.content); useEffect(() => { + const citationRegex = /\[([^\]]+)\]/g; const regex = /\[(\d+)\]/g; let processedMessage = message.content; @@ -67,11 +68,33 @@ const MessageBox = ({ ) { setParsedMessage( processedMessage.replace( - regex, - (_, number) => - `${number}`, + citationRegex, + (_, capturedContent: string) => { + const numbers = capturedContent + .split(',') + .map((numStr) => numStr.trim()) + + const linksHtml = numbers + .map((numStr) => { + const number = parseInt(numStr); + + if (isNaN(number) || number <= 0) { + return `[${numStr}]`; + } + + const source = message.sources?.[number - 1]; + const url = source?.metadata?.url; + + if (url) { + return `${numStr}`; + } else { + return `[${numStr}]`; + } + }) + .join(''); + + return linksHtml; + }, ), ); return;