@@ -32,11 +32,18 @@ export type ChatMessageFeedProps = DarkModeProps & {
3232 disclaimer ?: React . ReactNode ;
3333 disclaimerHeading ?: string ;
3434 initialMessage ?: MessageData | null ;
35+ messageBottomContent ?: React . ReactNode ;
3536} ;
3637
3738export function ChatMessageFeed ( props : ChatMessageFeedProps ) {
3839 const { darkMode } = useDarkMode ( props . darkMode ) ;
39- const { className, disclaimer, disclaimerHeading, initialMessage } = props ;
40+ const {
41+ className,
42+ disclaimer,
43+ disclaimerHeading,
44+ initialMessage,
45+ messageBottomContent,
46+ } = props ;
4047
4148 const {
4249 awaitingReply,
@@ -72,20 +79,23 @@ export function ChatMessageFeed(props: ChatMessageFeedProps) {
7279
7380 const isInitialMessage = idx === 0 ;
7481
82+ const showRatingAndBottomContent =
83+ ! isLoading &&
84+ // If we've sent a request but the response hasn't started streaming yet, don't show the rating
85+ ! ( awaitingReply && conversation . streamingMessageId === message . id ) &&
86+ // Users can rate assistant messages that have started streaming
87+ message . role === "assistant" &&
88+ // We don't want users to rate the initial message (and they can't because it's not in the database)
89+ ! isInitialMessage ;
90+
7591 return (
7692 < Message
7793 key = { message . id }
7894 messageData = { message }
7995 isLoading = { isLoading }
80- showRating = {
81- // Users can rate assistant messages that have started streaming
82- message . role === "assistant" &&
83- ! isLoading &&
84- ! (
85- awaitingReply && conversation . streamingMessageId === message . id
86- ) &&
87- // We don't want users to rate the initial message (and they can't because it's not in the database)
88- ! isInitialMessage
96+ showRating = { showRatingAndBottomContent }
97+ bottomContent = {
98+ showRatingAndBottomContent ? messageBottomContent : null
8999 }
90100 conversation = { conversation }
91101 suggestedPrompts = { message . suggestedPrompts }
0 commit comments