Skip to content

Commit 00eb733

Browse files
authored
Merge pull request #51132 from nextcloud/backport/50919/stable31
[stable31] fix(files): Ensure the filter instance is mounted
2 parents 0a1a63c + 74c9634 commit 00eb733

File tree

9 files changed

+20
-23
lines changed

9 files changed

+20
-23
lines changed

apps/files/src/eventbus.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ declare module '@nextcloud/event-bus' {
1313
'files:favorites:removed': Node
1414
'files:favorites:added': Node
1515

16+
'files:filters:changed': undefined
17+
1618
'files:node:created': Node
1719
'files:node:deleted': Node
1820
'files:node:updated': Node

apps/files/src/filters/HiddenFilesFilter.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ class HiddenFilesFilter extends FileListFilter {
1515

1616
constructor() {
1717
super('files:hidden', 0)
18-
this.showHidden = loadState<UserConfig>('files', 'config', { show_hidden: false }).show_hidden
18+
this.showHidden = loadState<Partial<UserConfig>>('files', 'config', { show_hidden: false }).show_hidden
1919

2020
subscribe('files:config:updated', ({ key, value }) => {
2121
if (key === 'show_hidden') {

apps/files/src/filters/TypeFilter.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,12 @@ class TypeFilter extends FileListFilter {
149149

150150
public setPresets(presets?: ITypePreset[]) {
151151
this.currentPresets = presets ?? []
152-
this.currentInstance!.$props.presets = presets
152+
if (this.currentInstance !== undefined) {
153+
// could be called before the instance was created
154+
// (meaning the files list is not mounted yet)
155+
this.currentInstance.$props.presets = presets
156+
}
157+
153158
this.filterUpdated()
154159

155160
const chips: IFileListFilterChip[] = []

apps/files/src/store/filters.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* SPDX-License-Identifier: AGPL-3.0-or-later
44
*/
55
import type { FilterUpdateChipsEvent, IFileListFilter, IFileListFilterChip } from '@nextcloud/files'
6-
import { subscribe } from '@nextcloud/event-bus'
6+
import { emit, subscribe } from '@nextcloud/event-bus'
77
import { getFileListFilters } from '@nextcloud/files'
88
import { defineStore } from 'pinia'
99
import { computed, ref } from 'vue'
@@ -20,7 +20,6 @@ function isFileListFilterWithUi(value: IFileListFilter): value is Required<IFile
2020
export const useFiltersStore = defineStore('filters', () => {
2121
const chips = ref<Record<string, IFileListFilterChip[]>>({})
2222
const filters = ref<IFileListFilter[]>([])
23-
const filtersChanged = ref(false)
2423

2524
/**
2625
* Currently active filter chips
@@ -77,7 +76,7 @@ export const useFiltersStore = defineStore('filters', () => {
7776
* @private
7877
*/
7978
function onFilterUpdate() {
80-
filtersChanged.value = true
79+
emit('files:filters:changed')
8180
}
8281

8382
/**
@@ -122,7 +121,6 @@ export const useFiltersStore = defineStore('filters', () => {
122121
chips,
123122
filters,
124123
filtersWithUI,
125-
filtersChanged,
126124

127125
// getters / computed
128126
activeChips,

apps/files/src/views/FilesList.vue

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -432,10 +432,6 @@ export default defineComponent({
432432
&& this.currentFolder && (this.currentFolder.permissions & Permission.SHARE) !== 0
433433
},
434434
435-
filtersChanged() {
436-
return this.filtersStore.filtersChanged
437-
},
438-
439435
showCustomEmptyView() {
440436
return !this.loading && this.isEmptyDir && this.currentView?.emptyView !== undefined
441437
},
@@ -516,13 +512,6 @@ export default defineComponent({
516512
// Also refresh the filtered content
517513
this.filterDirContent()
518514
},
519-
520-
filtersChanged() {
521-
if (this.filtersChanged) {
522-
this.filterDirContent()
523-
this.filtersStore.filtersChanged = false
524-
}
525-
},
526515
},
527516
528517
async mounted() {
@@ -532,6 +521,9 @@ export default defineComponent({
532521
// reload on settings change
533522
subscribe('files:config:updated', this.fetchContent)
534523
524+
// filter content if filter were changed
525+
subscribe('files:filters:changed', this.filterDirContent)
526+
535527
// Finally, fetch the current directory contents
536528
await this.fetchContent()
537529
if (this.fileId) {

dist/files-init.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/files-init.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/files-main.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/files-main.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)