AW-496-assistant-typing
This commit is contained in:
parent
33863911c4
commit
f2b1519c67
@ -30,18 +30,19 @@ export interface ChatMessageProps {
|
||||
}
|
||||
|
||||
export default function ChatMessage({ message }: ChatMessageProps) {
|
||||
const { read } = useChat();
|
||||
const { isConnected, read } = useChat();
|
||||
|
||||
useEffect(() => {
|
||||
if (
|
||||
!!message.id &&
|
||||
!message.isRead &&
|
||||
message.id !== "typing" &&
|
||||
!message.id.startsWith("sending-message")
|
||||
!message.id.startsWith("sending-message") &&
|
||||
isConnected
|
||||
) {
|
||||
read([message.id]);
|
||||
}
|
||||
}, [message.id, message.isRead, read]);
|
||||
}, [message.id, message.isRead, read, isConnected]);
|
||||
|
||||
return (
|
||||
<div className={clsx(styles.message, message.isOwn && styles.own)}>
|
||||
|
||||
@ -9,6 +9,7 @@ const ChatMessageSchema = z.object({
|
||||
isRead: z.boolean(),
|
||||
type: z.enum(["text", "image", "voice"]),
|
||||
text: z.string().optional(),
|
||||
isLast: z.boolean().optional(),
|
||||
suggestions: z.array(z.string()).optional(),
|
||||
});
|
||||
|
||||
|
||||
@ -22,7 +22,7 @@ const PAGE_LIMIT = 50;
|
||||
|
||||
type UIMessage = Pick<
|
||||
IChatMessage,
|
||||
"id" | "role" | "text" | "createdDate" | "isRead" | "suggestions"
|
||||
"id" | "role" | "text" | "createdDate" | "isRead" | "suggestions" | "isLast"
|
||||
>;
|
||||
|
||||
interface UseChatSocketOptions {
|
||||
@ -46,6 +46,7 @@ export const useChatSocket = (
|
||||
createdDate: m.createdDate,
|
||||
isRead: m.isRead,
|
||||
suggestions: m.suggestions,
|
||||
isLast: m.isLast,
|
||||
});
|
||||
|
||||
const [messages, setMessages] = useState<UIMessage[]>(() =>
|
||||
@ -65,7 +66,11 @@ export const useChatSocket = (
|
||||
const { suggestions, setSuggestions } = useChatStore(state => state);
|
||||
|
||||
const isLoadingAdvisorMessage = useMemo(() => {
|
||||
return messages.length > 0 && messages[0].role !== "assistant";
|
||||
return (
|
||||
messages.length > 0 &&
|
||||
(messages[0].role !== "assistant" ||
|
||||
(Object.hasOwn(messages[0], "isLast") && !messages[0].isLast))
|
||||
);
|
||||
}, [messages]);
|
||||
|
||||
const joinChat = useCallback(
|
||||
@ -179,6 +184,7 @@ export const useChatSocket = (
|
||||
createdDate: d.createdDate,
|
||||
isRead: d.isRead,
|
||||
suggestions: d.suggestions,
|
||||
isLast: d.isLast,
|
||||
})
|
||||
);
|
||||
return Array.from(map.values()).sort(
|
||||
|
||||
Loading…
Reference in New Issue
Block a user