Skip to content

Commit 6491f6e

Browse files
committed
fix(files): properly handle viewer integration of sidebar
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
1 parent 10661bf commit 6491f6e

3 files changed

Lines changed: 15 additions & 3 deletions

File tree

apps/files/src/eventbus.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ declare module '@nextcloud/event-bus' {
3333

3434
'files:sidebar:opened': INode
3535
'files:sidebar:closed': undefined
36+
37+
'viewer:sidebar:open': { source: string }
3638
}
3739
}
3840

apps/files/src/services/RouterService.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,9 +64,7 @@ export default class RouterService {
6464
query?: Record<string, string | (string | null)[] | null | undefined>,
6565
replace?: boolean,
6666
): Promise<Route> {
67-
if (!name) {
68-
name = this.router.currentRoute.name as string
69-
}
67+
name ??= this.router.currentRoute.name as string
7068
const location: Location = { name, query, params }
7169
if (replace) {
7270
return this._router.replace(location)

apps/files/src/store/sidebar.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import { defineStore } from 'pinia'
1111
import { computed, ref, watch } from 'vue'
1212
import logger from '../logger.ts'
1313
import { useActiveStore } from './active.ts'
14+
import { useFilesStore } from './files.ts'
1415

1516
export const useSidebarStore = defineStore('sidebar', () => {
1617
const activeTab = ref<string>()
@@ -127,6 +128,17 @@ export const useSidebarStore = defineStore('sidebar', () => {
127128
}
128129
})
129130

131+
subscribe('viewer:sidebar:open', ({ source }) => {
132+
const filesStore = useFilesStore()
133+
const node = filesStore.getNode(source)
134+
if (node) {
135+
logger.debug('Opening sidebar for node from Viewer.', { node })
136+
open(node)
137+
} else {
138+
logger.error(`Cannot open sidebar for node '${source}' because it was not found in the current view.`)
139+
}
140+
})
141+
130142
let initialized = false
131143
// close sidebar when parameter is removed from url
132144
subscribe('files:list:updated', () => {

0 commit comments

Comments
 (0)