66 RcbPreInjectMessageEvent ,
77 Plugin ,
88 RcbStartStreamMessageEvent ,
9+ useMessages ,
10+ useChatHistory ,
11+ useSettings ,
912} from "react-chatbotify" ;
1013
1114import MarkdownWrapper from "../components/MarkdownWrapper" ;
@@ -21,12 +24,28 @@ import { shouldRenderMarkdown } from "../utils/renderConditionHelper";
2124const useRcbPlugin = ( pluginConfig ?: PluginConfig ) => {
2225 const { getBotId } = useBotId ( ) ;
2326 const { getFlow } = useFlow ( ) ;
27+ const { messages, replaceMessages } = useMessages ( ) ;
28+ const { settings } = useSettings ( ) ;
29+ const { hasChatHistoryLoaded } = useChatHistory ( ) ;
2430
2531 const mergedPluginConfig = { ...pluginConfig , ...DefaultPluginConfig } ;
2632
2733 // if custom component provided, use it; otherwise defaults to react-markdown
2834 const component = mergedPluginConfig . markdownComponent ? mergedPluginConfig . markdownComponent : MarkdownWrapper ;
2935
36+ useEffect ( ( ) => {
37+ if ( hasChatHistoryLoaded ) {
38+ const messagesCopy = [ ...messages ] ;
39+ for ( let i = 0 ; i < messagesCopy . length && i < ( settings . chatHistory ?. maxEntries ?? 30 ) ; i ++ ) {
40+ const message = messagesCopy [ i ] ;
41+ if ( message . tags ?. includes ( "rcb-markdown-renderer-plugin:parsed" ) ) {
42+ message . contentWrapper = component ;
43+ }
44+ }
45+ replaceMessages ( messagesCopy ) ;
46+ }
47+ } , [ hasChatHistoryLoaded ] ) ;
48+
3049 useEffect ( ( ) => {
3150 /**
3251 * Handles message events and adds wrapper to render markdown if applicable.
@@ -45,6 +64,10 @@ const useRcbPlugin = (pluginConfig?: PluginConfig) => {
4564
4665
4766 event . data . message . contentWrapper = component ;
67+ if ( ! event . data . message . tags ) {
68+ event . data . message . tags = [ ] ;
69+ }
70+ event . data . message . tags . push ( "rcb-markdown-renderer-plugin:parsed" ) ;
4871 } ;
4972
5073 // adds required events
0 commit comments