fix: type errors

master
Avraham Sakal 3 weeks ago
parent 9ef79e99df
commit f8c8c4906a

@ -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;
}; };

Loading…
Cancel
Save