44 ResizablePanel ,
55 ResizablePanelGroup ,
66} from "@/components/ui/resizable" ;
7- import { useCallback , useEffect , useMemo , useState } from "react" ;
7+ import { useEffect , useMemo , useRef , useState } from "react" ;
88import { openTab } from "@/messages/open-tab" ;
99import WindowTabs , { WindowTabItemProps } from "./windows-tab" ;
1010import useMessageListener from "@/components/hooks/useMessageListener" ;
@@ -139,12 +139,13 @@ export default function DatabaseGui() {
139139 ] . filter ( Boolean ) as { text : string ; onClick : ( ) => void } [ ] ;
140140 } , [ currentSchemaName , databaseDriver ] ) ;
141141
142- const onTabSelectChange = useCallback (
143- ( newTabIndex : number ) => {
144- setSelectedTabIndex ( newTabIndex ) ;
145-
146- const currentTab = tabs [ newTabIndex ] ;
147- if ( currentTab ) {
142+ // Send to analytic when tab changes.
143+ const previousLogTabKey = useRef < string > ( "" ) ;
144+ useEffect ( ( ) => {
145+ const currentTab = tabs [ selectedTabIndex ] ;
146+ if ( currentTab && currentTab . key !== previousLogTabKey . current ) {
147+ // We don't log the first tab because it's already logged in the main screen.
148+ if ( previousLogTabKey . current ) {
148149 sendAnalyticEvents ( [
149150 {
150151 name : "page_view" ,
@@ -156,9 +157,10 @@ export default function DatabaseGui() {
156157 } ,
157158 ] ) ;
158159 }
159- } ,
160- [ tabs ]
161- ) ;
160+
161+ previousLogTabKey . current = currentTab . key ;
162+ }
163+ } , [ tabs , selectedTabIndex , previousLogTabKey ] ) ;
162164
163165 return (
164166 < div className = "h-screen w-screen flex flex-col" >
@@ -172,7 +174,7 @@ export default function DatabaseGui() {
172174 menu = { tabSideMenu }
173175 tabs = { tabs }
174176 selected = { selectedTabIndex }
175- onSelectChange = { onTabSelectChange }
177+ onSelectChange = { setSelectedTabIndex }
176178 onTabsChange = { setTabs }
177179 />
178180 </ ResizablePanel >
0 commit comments