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

View File

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