|
|
|
@ -28,6 +28,7 @@ import type {
|
|
|
|
|
DraftMessage,
|
|
|
|
|
OtherParameters,
|
|
|
|
|
SendMessageStatus,
|
|
|
|
|
SendMessageStatusUI,
|
|
|
|
|
} from "@/types";
|
|
|
|
|
import Markdown from "react-markdown";
|
|
|
|
|
import {
|
|
|
|
@ -387,7 +388,7 @@ export default function ChatPage() {
|
|
|
|
|
{
|
|
|
|
|
signal: abortController.signal,
|
|
|
|
|
onData: (data) => {
|
|
|
|
|
setSendMessageStatus(data);
|
|
|
|
|
setSendMessageStatus(data as SendMessageStatus);
|
|
|
|
|
|
|
|
|
|
// If we've completed, update the UI and invalidate queries
|
|
|
|
|
if (data.status === "completed") {
|
|
|
|
@ -418,7 +419,7 @@ export default function ChatPage() {
|
|
|
|
|
console.error("Subscription error:", error);
|
|
|
|
|
setIsSendingMessage(false);
|
|
|
|
|
setSendMessageStatus({
|
|
|
|
|
status: "error",
|
|
|
|
|
status: "error" as const,
|
|
|
|
|
message: "An error occurred while sending the message",
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
@ -434,7 +435,7 @@ export default function ChatPage() {
|
|
|
|
|
console.error("Failed to start subscription:", error);
|
|
|
|
|
setIsSendingMessage(false);
|
|
|
|
|
setSendMessageStatus({
|
|
|
|
|
status: "error",
|
|
|
|
|
status: "error" as const,
|
|
|
|
|
message: "Failed to start message sending process",
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
@ -758,7 +759,9 @@ function Messages() {
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
/** Optimistically update the affected queries in react-query's cache: */
|
|
|
|
|
const previousMessages = await queryClient.getQueryData(
|
|
|
|
|
const previousMessages = await queryClient.getQueryData<
|
|
|
|
|
Array<CommittedMessage>
|
|
|
|
|
>(
|
|
|
|
|
trpc.chat.messages.fetchByConversationId.queryKey({
|
|
|
|
|
conversationId,
|
|
|
|
|
})
|
|
|
|
@ -772,7 +775,7 @@ function Messages() {
|
|
|
|
|
const newMessages = previousMessages.filter(
|
|
|
|
|
(m: CommittedMessage) => m.id !== messageIdToDelete
|
|
|
|
|
);
|
|
|
|
|
queryClient.setQueryData(
|
|
|
|
|
queryClient.setQueryData<Array<CommittedMessage>>(
|
|
|
|
|
trpc.chat.messages.fetchByConversationId.queryKey({
|
|
|
|
|
conversationId,
|
|
|
|
|
}),
|
|
|
|
@ -878,7 +881,7 @@ function Messages() {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const StatusMessage = memo(
|
|
|
|
|
({ sendMessageStatus }: { sendMessageStatus: SendMessageStatus | null }) => {
|
|
|
|
|
({ sendMessageStatus }: { sendMessageStatus: SendMessageStatusUI }) => {
|
|
|
|
|
const [displayMessage, setDisplayMessage] = useState(sendMessageStatus);
|
|
|
|
|
const [isVisible, setIsVisible] = useState(sendMessageStatus !== null);
|
|
|
|
|
|
|
|
|
|