Skip to content

Commit b172f17

Browse files
committed
fix(files): do not reset active tab when re-opening
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
1 parent 50cc343 commit b172f17

File tree

1 file changed

+16
-7
lines changed

1 file changed

+16
-7
lines changed

apps/files/src/store/sidebar.ts

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)