Partial fix for links not working

This commit is contained in:
Weves
2024-05-27 17:29:16 -07:00
committed by Chris Weaver
parent 9a3613eb44
commit 008a91bff0
2 changed files with 112 additions and 100 deletions

View File

@@ -1020,103 +1020,99 @@ export function ChatPage({
const previousMessage = const previousMessage =
i !== 0 ? messageHistory[i - 1] : null; i !== 0 ? messageHistory[i - 1] : null;
return ( return (
<div key={i}> <AIMessage
<AIMessage key={message.messageId}
messageId={message.messageId} messageId={message.messageId}
content={message.message} content={message.message}
files={message.files} files={message.files}
query={messageHistory[i]?.query || undefined} query={messageHistory[i]?.query || undefined}
personaName={livePersona.name} personaName={livePersona.name}
citedDocuments={getCitedDocumentsFromMessage( citedDocuments={getCitedDocumentsFromMessage(
message message
)} )}
currentTool={currentTool} currentTool={currentTool}
isComplete={ isComplete={
i !== messageHistory.length - 1 || i !== messageHistory.length - 1 ||
!isStreaming !isStreaming
} }
hasDocs={ hasDocs={
(message.documents && (message.documents &&
message.documents.length > 0) === true message.documents.length > 0) === true
} }
handleFeedback={ handleFeedback={
i === messageHistory.length - 1 && i === messageHistory.length - 1 && isStreaming
isStreaming ? undefined
? undefined : (feedbackType) =>
: (feedbackType) => setCurrentFeedback([
setCurrentFeedback([ feedbackType,
feedbackType, message.messageId as number,
message.messageId as number, ])
]) }
} handleSearchQueryEdit={
handleSearchQueryEdit={ i === messageHistory.length - 1 &&
i === messageHistory.length - 1 && !isStreaming
!isStreaming ? (newQuery) => {
? (newQuery) => { if (!previousMessage) {
if (!previousMessage) { setPopup({
setPopup({ type: "error",
type: "error", message:
message: "Cannot edit query of first message - please refresh the page and try again.",
"Cannot edit query of first message - please refresh the page and try again.",
});
return;
}
if (
previousMessage.messageId === null
) {
setPopup({
type: "error",
message:
"Cannot edit query of a pending message - please wait a few seconds and try again.",
});
return;
}
onSubmit({
messageIdToResend:
previousMessage.messageId,
queryOverride: newQuery,
}); });
return;
} }
: undefined
} if (
isCurrentlyShowingRetrieved={ previousMessage.messageId === null
isShowingRetrieved ) {
} setPopup({
handleShowRetrieved={(messageNumber) => { type: "error",
if (isShowingRetrieved) { message:
setSelectedMessageForDocDisplay(null); "Cannot edit query of a pending message - please wait a few seconds and try again.",
} else { });
if (messageNumber !== null) { return;
setSelectedMessageForDocDisplay( }
messageNumber onSubmit({
); messageIdToResend:
} else { previousMessage.messageId,
setSelectedMessageForDocDisplay(-1); queryOverride: newQuery,
});
} }
} : undefined
}} }
handleForceSearch={() => { isCurrentlyShowingRetrieved={isShowingRetrieved}
if ( handleShowRetrieved={(messageNumber) => {
previousMessage && if (isShowingRetrieved) {
previousMessage.messageId setSelectedMessageForDocDisplay(null);
) { } else {
onSubmit({ if (messageNumber !== null) {
messageIdToResend: setSelectedMessageForDocDisplay(
previousMessage.messageId, messageNumber
forceSearch: true, );
});
} else { } else {
setPopup({ setSelectedMessageForDocDisplay(-1);
type: "error",
message:
"Failed to force search - please refresh the page and try again.",
});
} }
}} }
retrievalDisabled={retrievalDisabled} }}
/> handleForceSearch={() => {
</div> if (
previousMessage &&
previousMessage.messageId
) {
onSubmit({
messageIdToResend:
previousMessage.messageId,
forceSearch: true,
});
} else {
setPopup({
type: "error",
message:
"Failed to force search - please refresh the page and try again.",
});
}
}}
retrievalDisabled={retrievalDisabled}
/>
); );
} else { } else {
return ( return (

View File

@@ -113,6 +113,7 @@ export const AIMessage = ({
if (!isReady) { if (!isReady) {
return <div />; return <div />;
} }
console.log(content);
if (!isComplete) { if (!isComplete) {
const trimIncompleteCodeSection = ( const trimIncompleteCodeSection = (
@@ -223,14 +224,29 @@ export const AIMessage = ({
key={messageId} key={messageId}
className="prose max-w-full" className="prose max-w-full"
components={{ components={{
a: ({ node, ...props }) => ( a: (props) => {
<a const { node, ...rest } = props;
{...props} // for some reason <a> tags cause the onClick to not apply
className="text-blue-500 hover:text-blue-700" // and the links are unclickable
target="_blank" // TODO: fix the fact that you have to double click to follow link
rel="noopener noreferrer" // for the first link
/> return (
), <a
key={node?.position?.start?.offset}
onClick={() =>
rest.href
? window.open(rest.href, "_blank")
: undefined
}
className="cursor-pointer text-link hover:text-link-hover"
// href={rest.href}
// target="_blank"
// rel="noopener noreferrer"
>
{rest.children}
</a>
);
},
code: (props) => ( code: (props) => (
<CodeBlock {...props} content={content as string} /> <CodeBlock {...props} content={content as string} />
), ),