@@ -10,60 +10,67 @@ import { ExtensionStateContextProvider, useExtensionState } from "./context/Exte
1010import { FirebaseAuthProvider } from "./context/FirebaseAuthContext"
1111import { vscode } from "./utils/vscode"
1212import McpView from "./components/mcp/configuration/McpConfigurationView"
13- import { McpViewTab } from "@shared/mcp"
1413
1514const AppContent = ( ) => {
16- const { didHydrateState, showWelcome, shouldShowAnnouncement, telemetrySetting , vscMachineId } = useExtensionState ( )
15+ const { didHydrateState, showWelcome, shouldShowAnnouncement, showMcp , mcpTab } = useExtensionState ( )
1716 const [ showSettings , setShowSettings ] = useState ( false )
1817 const hideSettings = useCallback ( ( ) => setShowSettings ( false ) , [ ] )
1918 const [ showHistory , setShowHistory ] = useState ( false )
20- const [ showMcp , setShowMcp ] = useState ( false )
2119 const [ showAccount , setShowAccount ] = useState ( false )
2220 const [ showAnnouncement , setShowAnnouncement ] = useState ( false )
23- const [ mcpTab , setMcpTab ] = useState < McpViewTab | undefined > ( undefined )
2421
25- const handleMessage = useCallback ( ( e : MessageEvent ) => {
26- const message : ExtensionMessage = e . data
27- switch ( message . type ) {
28- case "action" :
29- switch ( message . action ! ) {
30- case "settingsButtonClicked" :
31- setShowSettings ( true )
32- setShowHistory ( false )
33- setShowMcp ( false )
34- setShowAccount ( false )
35- break
36- case "historyButtonClicked" :
37- setShowSettings ( false )
38- setShowHistory ( true )
39- setShowMcp ( false )
40- setShowAccount ( false )
41- break
42- case "mcpButtonClicked" :
43- setShowSettings ( false )
44- setShowHistory ( false )
45- if ( message . tab ) {
46- setMcpTab ( message . tab )
47- }
48- setShowMcp ( true )
49- setShowAccount ( false )
50- break
51- case "accountButtonClicked" :
52- setShowSettings ( false )
53- setShowHistory ( false )
54- setShowMcp ( false )
55- setShowAccount ( true )
56- break
57- case "chatButtonClicked" :
58- setShowSettings ( false )
59- setShowHistory ( false )
60- setShowMcp ( false )
61- setShowAccount ( false )
62- break
63- }
64- break
65- }
66- } , [ ] )
22+ const { setShowMcp, setMcpTab } = useExtensionState ( )
23+
24+ const closeMcpView = useCallback ( ( ) => {
25+ setShowMcp ( false )
26+ setMcpTab ( undefined )
27+ } , [ setShowMcp , setMcpTab ] )
28+
29+ const handleMessage = useCallback (
30+ ( e : MessageEvent ) => {
31+ const message : ExtensionMessage = e . data
32+ switch ( message . type ) {
33+ case "action" :
34+ switch ( message . action ! ) {
35+ case "settingsButtonClicked" :
36+ setShowSettings ( true )
37+ setShowHistory ( false )
38+ closeMcpView ( )
39+ setShowAccount ( false )
40+ break
41+ case "historyButtonClicked" :
42+ setShowSettings ( false )
43+ setShowHistory ( true )
44+ closeMcpView ( )
45+ setShowAccount ( false )
46+ break
47+ case "mcpButtonClicked" :
48+ setShowSettings ( false )
49+ setShowHistory ( false )
50+ if ( message . tab ) {
51+ setMcpTab ( message . tab )
52+ }
53+ setShowMcp ( true )
54+ setShowAccount ( false )
55+ break
56+ case "accountButtonClicked" :
57+ setShowSettings ( false )
58+ setShowHistory ( false )
59+ closeMcpView ( )
60+ setShowAccount ( true )
61+ break
62+ case "chatButtonClicked" :
63+ setShowSettings ( false )
64+ setShowHistory ( false )
65+ closeMcpView ( )
66+ setShowAccount ( false )
67+ break
68+ }
69+ break
70+ }
71+ } ,
72+ [ setShowMcp , setMcpTab , closeMcpView ] ,
73+ )
6774
6875 useEvent ( "message" , handleMessage )
6976
@@ -95,13 +102,13 @@ const AppContent = () => {
95102 < >
96103 { showSettings && < SettingsView onDone = { hideSettings } /> }
97104 { showHistory && < HistoryView onDone = { ( ) => setShowHistory ( false ) } /> }
98- { showMcp && < McpView initialTab = { mcpTab } onDone = { ( ) => setShowMcp ( false ) } /> }
105+ { showMcp && < McpView initialTab = { mcpTab } onDone = { closeMcpView } /> }
99106 { showAccount && < AccountView onDone = { ( ) => setShowAccount ( false ) } /> }
100107 { /* Do not conditionally load ChatView, it's expensive and there's state we don't want to lose (user input, disableInput, askResponse promise, etc.) */ }
101108 < ChatView
102109 showHistoryView = { ( ) => {
103110 setShowSettings ( false )
104- setShowMcp ( false )
111+ closeMcpView ( )
105112 setShowAccount ( false )
106113 setShowHistory ( true )
107114 } }
0 commit comments