fix: type errors
This commit is contained in:
@@ -28,6 +28,7 @@ import type {
|
|||||||
DraftMessage,
|
DraftMessage,
|
||||||
OtherParameters,
|
OtherParameters,
|
||||||
SendMessageStatus,
|
SendMessageStatus,
|
||||||
|
SendMessageStatusUI,
|
||||||
} from "@/types";
|
} from "@/types";
|
||||||
import Markdown from "react-markdown";
|
import Markdown from "react-markdown";
|
||||||
import {
|
import {
|
||||||
@@ -387,7 +388,7 @@ export default function ChatPage() {
|
|||||||
{
|
{
|
||||||
signal: abortController.signal,
|
signal: abortController.signal,
|
||||||
onData: (data) => {
|
onData: (data) => {
|
||||||
setSendMessageStatus(data);
|
setSendMessageStatus(data as SendMessageStatus);
|
||||||
|
|
||||||
// If we've completed, update the UI and invalidate queries
|
// If we've completed, update the UI and invalidate queries
|
||||||
if (data.status === "completed") {
|
if (data.status === "completed") {
|
||||||
@@ -418,7 +419,7 @@ export default function ChatPage() {
|
|||||||
console.error("Subscription error:", error);
|
console.error("Subscription error:", error);
|
||||||
setIsSendingMessage(false);
|
setIsSendingMessage(false);
|
||||||
setSendMessageStatus({
|
setSendMessageStatus({
|
||||||
status: "error",
|
status: "error" as const,
|
||||||
message: "An error occurred while sending the message",
|
message: "An error occurred while sending the message",
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
@@ -434,7 +435,7 @@ export default function ChatPage() {
|
|||||||
console.error("Failed to start subscription:", error);
|
console.error("Failed to start subscription:", error);
|
||||||
setIsSendingMessage(false);
|
setIsSendingMessage(false);
|
||||||
setSendMessageStatus({
|
setSendMessageStatus({
|
||||||
status: "error",
|
status: "error" as const,
|
||||||
message: "Failed to start message sending process",
|
message: "Failed to start message sending process",
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -758,7 +759,9 @@ function Messages() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
/** Optimistically update the affected queries in react-query's cache: */
|
/** 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({
|
trpc.chat.messages.fetchByConversationId.queryKey({
|
||||||
conversationId,
|
conversationId,
|
||||||
})
|
})
|
||||||
@@ -772,7 +775,7 @@ function Messages() {
|
|||||||
const newMessages = previousMessages.filter(
|
const newMessages = previousMessages.filter(
|
||||||
(m: CommittedMessage) => m.id !== messageIdToDelete
|
(m: CommittedMessage) => m.id !== messageIdToDelete
|
||||||
);
|
);
|
||||||
queryClient.setQueryData(
|
queryClient.setQueryData<Array<CommittedMessage>>(
|
||||||
trpc.chat.messages.fetchByConversationId.queryKey({
|
trpc.chat.messages.fetchByConversationId.queryKey({
|
||||||
conversationId,
|
conversationId,
|
||||||
}),
|
}),
|
||||||
@@ -878,7 +881,7 @@ function Messages() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const StatusMessage = memo(
|
const StatusMessage = memo(
|
||||||
({ sendMessageStatus }: { sendMessageStatus: SendMessageStatus | null }) => {
|
({ sendMessageStatus }: { sendMessageStatus: SendMessageStatusUI }) => {
|
||||||
const [displayMessage, setDisplayMessage] = useState(sendMessageStatus);
|
const [displayMessage, setDisplayMessage] = useState(sendMessageStatus);
|
||||||
const [isVisible, setIsVisible] = useState(sendMessageStatus !== null);
|
const [isVisible, setIsVisible] = useState(sendMessageStatus !== null);
|
||||||
|
|
||||||
|
|||||||
@@ -1,19 +1,28 @@
|
|||||||
import type { UIMessage } from "ai";
|
import type { UIMessage } from "ai";
|
||||||
import type { generateText } from "ai";
|
import type { generateText } from "ai";
|
||||||
import type { Conversation, Fact, FactTrigger } from "./database/common";
|
import type { Conversation, Fact, FactTrigger } from "./database/common";
|
||||||
|
import type { chat } from "./server/trpc/chat";
|
||||||
|
|
||||||
export type OtherParameters = Omit<
|
export type OtherParameters = Omit<
|
||||||
Parameters<typeof generateText>[0],
|
Parameters<typeof generateText>[0],
|
||||||
"model" | "messages" | "abortSignal"
|
"model" | "messages" | "abortSignal" | "prompt"
|
||||||
>;
|
>;
|
||||||
|
|
||||||
export type ConversationUI = Conversation & {};
|
export type ConversationUI = Conversation & {};
|
||||||
|
|
||||||
export type SendMessageStatus = {
|
/** Helper to extract the inner type of an async iterable. */
|
||||||
status: string;
|
type AsyncIterated<T> = T extends AsyncIterable<infer U> ? U : never;
|
||||||
message: string;
|
export type SendMessageStatus = AsyncIterated<
|
||||||
result?: any;
|
Awaited<ReturnType<typeof chat.sendMessage>>
|
||||||
};
|
>;
|
||||||
|
export type SendMessageStatusUI =
|
||||||
|
| SendMessageStatus
|
||||||
|
| {
|
||||||
|
readonly status: "error";
|
||||||
|
readonly message: string;
|
||||||
|
readonly result?: undefined;
|
||||||
|
}
|
||||||
|
| null;
|
||||||
|
|
||||||
export type Store = {
|
export type Store = {
|
||||||
/** This is a string because Milvus sends it as a string, and the value
|
/** This is a string because Milvus sends it as a string, and the value
|
||||||
@@ -27,7 +36,7 @@ export type Store = {
|
|||||||
facts: Array<Fact>;
|
facts: Array<Fact>;
|
||||||
factTriggers: Array<FactTrigger>;
|
factTriggers: Array<FactTrigger>;
|
||||||
loading: boolean;
|
loading: boolean;
|
||||||
sendMessageStatus: SendMessageStatus | null;
|
sendMessageStatus: SendMessageStatusUI;
|
||||||
isSendingMessage: boolean;
|
isSendingMessage: boolean;
|
||||||
setConversationId: (conversationId: string) => void;
|
setConversationId: (conversationId: string) => void;
|
||||||
setConversationTitle: (conversationTitle: string) => void;
|
setConversationTitle: (conversationTitle: string) => void;
|
||||||
@@ -43,7 +52,7 @@ export type Store = {
|
|||||||
removeFact: (factId: string) => void;
|
removeFact: (factId: string) => void;
|
||||||
removeFactTrigger: (factTriggerId: string) => void;
|
removeFactTrigger: (factTriggerId: string) => void;
|
||||||
setLoading: (loading: boolean) => void;
|
setLoading: (loading: boolean) => void;
|
||||||
setSendMessageStatus: (status: SendMessageStatus | null) => void;
|
setSendMessageStatus: (status: SendMessageStatusUI) => void;
|
||||||
setIsSendingMessage: (isSending: boolean) => void;
|
setIsSendingMessage: (isSending: boolean) => void;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user