@@ -42,7 +42,7 @@ export const useSidebarStore = defineStore('sidebar', () => {
4242 */
4343 function open ( node : INode , tabId ?: string ) {
4444 if ( ! ( node && activeStore . activeFolder && activeStore . activeView ) ) {
45- logger . debug ( 'Cannot open sidebar because the active folder or view is not set.' , {
45+ logger . debug ( 'sidebar: cannot open sidebar because the active folder or view is not set.' , {
4646 node,
4747 activeFolder : activeStore . activeFolder ,
4848 activeView : activeStore . activeView ,
@@ -51,19 +51,28 @@ export const useSidebarStore = defineStore('sidebar', () => {
5151 throw new Error ( 'Cannot open sidebar because the active folder or view is not set.' )
5252 }
5353
54+ if ( isOpen . value && currentNode . value ?. source === node . source ) {
55+ logger . debug ( 'sidebar: already open for current node' )
56+ if ( tabId ) {
57+ logger . debug ( 'sidebar: already open for current node - switching tab' , { tabId } )
58+ setActiveTab ( tabId )
59+ }
60+ return
61+ }
62+
5463 const newTabs = getTabs ( {
5564 node,
5665 folder : activeStore . activeFolder ,
5766 view : activeStore . activeView ,
5867 } )
5968
6069 if ( tabId && ! newTabs . find ( ( { id } ) => id === tabId ) ) {
61- logger . warn ( `Cannot open sidebar tab '${ tabId } ' because it is not available for the current context.` )
70+ logger . warn ( `sidebar: cannot open tab '${ tabId } ' because it is not available for the current context.` )
6271 activeTab . value = newTabs [ 0 ] ?. id
6372 } else {
6473 activeTab . value = tabId ?? newTabs [ 0 ] ?. id
6574 }
66- logger . debug ( `Opening sidebar for ${ node . displayname } ` , { node } )
75+ logger . debug ( `sidebar: opening for ${ node . displayname } ` , { node } )
6776 activeStore . activeNode = node
6877 isOpen . value = true
6978 }
@@ -133,10 +142,10 @@ export const useSidebarStore = defineStore('sidebar', () => {
133142 const filesStore = useFilesStore ( )
134143 const node = filesStore . getNode ( source )
135144 if ( node ) {
136- logger . debug ( 'Opening sidebar for node from Viewer.' , { node } )
145+ logger . debug ( 'sidebar: opening for node from Viewer.' , { node } )
137146 open ( node )
138147 } else {
139- logger . error ( `Cannot open sidebar for node '${ source } ' because it was not found in the current view.` )
148+ logger . error ( `sidebar: cannot open for node '${ source } ' because it was not found in the current view.` )
140149 }
141150 } )
142151
@@ -148,7 +157,7 @@ export const useSidebarStore = defineStore('sidebar', () => {
148157 window . OCP . Files . Router . _router . afterEach ( ( to , from ) => {
149158 if ( ( from . query && ( 'opendetails' in from . query ) )
150159 && ( to . query && ! ( 'opendetails' in to . query ) ) ) {
151- logger . debug ( 'Closing sidebar because "opendetails" query parameter was removed from URL.' )
160+ logger . debug ( 'sidebar: closing because "opendetails" query parameter was removed from URL.' )
152161 close ( )
153162 }
154163 } )
@@ -160,7 +169,7 @@ export const useSidebarStore = defineStore('sidebar', () => {
160169 const params = { ...( window . OCP ?. Files ?. Router ?. params ?? { } ) }
161170 const query = { ...( window . OCP ?. Files ?. Router ?. query ?? { } ) }
162171
163- logger . debug ( `Sidebar current node changed: ${ isOpen ? 'open' : 'closed' } ` , { query, params, node : activeStore . activeNode } )
172+ logger . debug ( `sidebar: current node changed: ${ isOpen ? 'open' : 'closed' } ` , { query, params, node : activeStore . activeNode } )
164173 if ( ! isOpen && ( 'opendetails' in query ) ) {
165174 delete query . opendetails
166175 window . OCP . Files . Router . goToRoute (
0 commit comments