From ef1f16b7aa96291a219fbdc2498fb46031eb3bb1 Mon Sep 17 00:00:00 2001 From: chungyau97 Date: Tue, 1 Aug 2023 16:20:24 +0800 Subject: [PATCH 1/2] add hyperlink --- packages/ui/src/utils/genericHelper.js | 8 ++++++++ packages/ui/src/views/chatmessage/ChatMessage.js | 16 ++++++++++++++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/packages/ui/src/utils/genericHelper.js b/packages/ui/src/utils/genericHelper.js index 7bf8998e..324cc112 100644 --- a/packages/ui/src/utils/genericHelper.js +++ b/packages/ui/src/utils/genericHelper.js @@ -401,3 +401,11 @@ export const getInputVariables = (paramValue) => { } return inputVariables } + +export const isValidURL = (url) => { + try { + return new URL(url) + } catch (err) { + return undefined + } +} diff --git a/packages/ui/src/views/chatmessage/ChatMessage.js b/packages/ui/src/views/chatmessage/ChatMessage.js index b89af7bb..bf895eb3 100644 --- a/packages/ui/src/views/chatmessage/ChatMessage.js +++ b/packages/ui/src/views/chatmessage/ChatMessage.js @@ -30,6 +30,7 @@ import { baseURL, maxScroll } from 'store/constant' import robotPNG from 'assets/images/robot.png' import userPNG from 'assets/images/account.png' +import { isValidURL } from 'utils/genericHelper' export const ChatMessage = ({ open, chatflowid, isDialog }) => { const theme = useTheme() @@ -59,6 +60,10 @@ export const ChatMessage = ({ open, chatflowid, isDialog }) => { setSourceDialogOpen(true) } + const onURLClick = (data) => { + window.open(data, '_blank') + } + const scrollToBottom = () => { if (ps.current) { ps.current.scrollTo({ top: maxScroll }) @@ -320,16 +325,23 @@ export const ChatMessage = ({ open, chatflowid, isDialog }) => { {message.sourceDocuments && (
{message.sourceDocuments.map((source, index) => { + const URL = isValidURL(source.metadata.source) return ( onSourceDialogClick(source)} + onClick={() => + URL ? onURLClick(source.metadata.source) : onSourceDialogClick(source) + } /> ) })} From 64c0ecb075603615699fe3106686884082d3416c Mon Sep 17 00:00:00 2001 From: chungyau97 Date: Thu, 3 Aug 2023 18:21:45 +0800 Subject: [PATCH 2/2] add removeDuplicateURL --- packages/ui/src/views/chatmessage/ChatMessage.js | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/packages/ui/src/views/chatmessage/ChatMessage.js b/packages/ui/src/views/chatmessage/ChatMessage.js index bf895eb3..9cfc917b 100644 --- a/packages/ui/src/views/chatmessage/ChatMessage.js +++ b/packages/ui/src/views/chatmessage/ChatMessage.js @@ -64,6 +64,20 @@ export const ChatMessage = ({ open, chatflowid, isDialog }) => { window.open(data, '_blank') } + const removeDuplicateURL = (message) => { + const visitedURLs = [] + const newSourceDocuments = [] + message.sourceDocuments.forEach((source) => { + if (isValidURL(source.metadata.source) && !visitedURLs.includes(source.metadata.source)) { + visitedURLs.push(source.metadata.source) + newSourceDocuments.push(source) + } else if (!isValidURL(source.metadata.source)) { + newSourceDocuments.push(source) + } + }) + return newSourceDocuments + } + const scrollToBottom = () => { if (ps.current) { ps.current.scrollTo({ top: maxScroll }) @@ -324,7 +338,7 @@ export const ChatMessage = ({ open, chatflowid, isDialog }) => {
{message.sourceDocuments && (
- {message.sourceDocuments.map((source, index) => { + {removeDuplicateURL(message).map((source, index) => { const URL = isValidURL(source.metadata.source) return (