@@ -117,36 +117,19 @@ interface UrlMatch {
117117}
118118
119119const McpResponseDisplay : React . FC < McpResponseDisplayProps > = ( { responseText } ) => {
120- const { mcpResponsesCollapsed } = useExtensionState ( ) // Get setting from context
120+ const { mcpResponsesCollapsed, mcpRichDisplayEnabled } = useExtensionState ( ) // Get setting from context
121121 const [ isExpanded , setIsExpanded ] = useState ( ! mcpResponsesCollapsed ) // Initialize with context setting
122122 const [ isLoading , setIsLoading ] = useState ( false ) // Initial loading state for rich content
123123 const [ displayMode , setDisplayMode ] = useState < "rich" | "plain" > ( ( ) => {
124- // Get saved preference from localStorage, default to 'rich'
125- const savedMode = localStorage . getItem ( "mcpDisplayMode" )
126- return savedMode === "plain" ? "plain" : "rich"
124+ // Initialize directly from the global setting.
125+ return mcpRichDisplayEnabled ? "rich" : "plain"
127126 } )
128127 const [ urlMatches , setUrlMatches ] = useState < UrlMatch [ ] > ( [ ] )
129128 const [ error , setError ] = useState < string | null > ( null )
130- // Add a counter state for forcing re-renders to make toggling run smoother
131- const [ forceUpdateCounter , setForceUpdateCounter ] = useState ( 0 )
132129
133130 const toggleDisplayMode = useCallback ( ( ) => {
134- const newMode = displayMode === "rich" ? "plain" : "rich"
135- // Force an immediate re-render
136- setForceUpdateCounter ( ( prev ) => prev + 1 )
137- // Update display mode and save preference
138- setDisplayMode ( newMode )
139- localStorage . setItem ( "mcpDisplayMode" , newMode )
140- // If switching to plain mode, cancel any ongoing processing
141- if ( newMode === "plain" ) {
142- console . log ( "Switching to plain mode - cancelling URL processing" )
143- setUrlMatches ( [ ] ) // Clear any existing matches when switching to plain mode
144- } else {
145- // If switching to rich mode, the useEffect will re-run and fetch data
146- console . log ( "Switching to rich mode - will start URL processing" )
147- setUrlMatches ( [ ] )
148- }
149- } , [ displayMode ] )
131+ setDisplayMode ( ( prevMode ) => ( prevMode === "rich" ? "plain" : "rich" ) )
132+ } , [ ] )
150133
151134 const toggleExpand = useCallback ( ( ) => {
152135 setIsExpanded ( ( prev ) => ! prev )
@@ -155,14 +138,16 @@ const McpResponseDisplay: React.FC<McpResponseDisplayProps> = ({ responseText })
155138 // Effect to update isExpanded if mcpResponsesCollapsed changes from context
156139 useEffect ( ( ) => {
157140 setIsExpanded ( ! mcpResponsesCollapsed )
158- } , [ ] )
141+ } , [ mcpResponsesCollapsed ] )
159142
160143 // Find all URLs in the text and determine if they're images
161144 useEffect ( ( ) => {
162145 // Skip all processing if in plain mode
163146 if ( ! isExpanded || displayMode === "plain" ) {
164147 setIsLoading ( false )
165- setUrlMatches ( [ ] ) // Clear any existing matches when in plain mode
148+ if ( urlMatches . length > 0 ) {
149+ setUrlMatches ( [ ] ) // Clear any existing matches when in plain mode
150+ }
166151 return
167152 }
168153
@@ -280,7 +265,7 @@ const McpResponseDisplay: React.FC<McpResponseDisplayProps> = ({ responseText })
280265 processingCanceled = true
281266 console . log ( "Cleaning up URL processing" )
282267 }
283- } , [ responseText , displayMode , forceUpdateCounter , isExpanded ] )
268+ } , [ responseText , displayMode , isExpanded ] )
284269
285270 // Function to render content based on display mode
286271 const renderContent = ( ) => {
0 commit comments