aboutsummaryrefslogtreecommitdiffstats
path: root/apps/files/src
diff options
context:
space:
mode:
authorFerdinand Thiessen <opensource@fthiessen.de>2025-02-28 10:42:24 +0100
committerFerdinand Thiessen <opensource@fthiessen.de>2025-02-28 10:43:26 +0100
commitf7f41b6cb41a601c23ac73096e35df98848c627e (patch)
treecbadc933c5c7ea5f5784fc51bfadf36cba996230 /apps/files/src
parenta6735473974de149e886749c995e9d161649d0bc (diff)
downloadnextcloud-server-f7f41b6cb41a601c23ac73096e35df98848c627e.tar.gz
nextcloud-server-f7f41b6cb41a601c23ac73096e35df98848c627e.zip
refactor: use eventbus for updated filters
prevent filters not applied if `filtersChanged` was set before file list mounted. Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
Diffstat (limited to 'apps/files/src')
-rw-r--r--apps/files/src/eventbus.d.ts2
-rw-r--r--apps/files/src/store/filters.ts6
-rw-r--r--apps/files/src/views/FilesList.vue14
3 files changed, 7 insertions, 15 deletions
diff --git a/apps/files/src/eventbus.d.ts b/apps/files/src/eventbus.d.ts
index 49ac67fe4db..fb61b4a6d03 100644
--- a/apps/files/src/eventbus.d.ts
+++ b/apps/files/src/eventbus.d.ts
@@ -13,6 +13,8 @@ declare module '@nextcloud/event-bus' {
'files:favorites:removed': Node
'files:favorites:added': Node
+ 'files:filters:changed': undefined
+
'files:node:created': Node
'files:node:deleted': Node
'files:node:updated': Node
diff --git a/apps/files/src/store/filters.ts b/apps/files/src/store/filters.ts
index 08faa369053..fd16ec5dc84 100644
--- a/apps/files/src/store/filters.ts
+++ b/apps/files/src/store/filters.ts
@@ -3,7 +3,7 @@
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import type { FilterUpdateChipsEvent, IFileListFilter, IFileListFilterChip } from '@nextcloud/files'
-import { subscribe } from '@nextcloud/event-bus'
+import { emit, subscribe } from '@nextcloud/event-bus'
import { getFileListFilters } from '@nextcloud/files'
import { defineStore } from 'pinia'
import { computed, ref } from 'vue'
@@ -20,7 +20,6 @@ function isFileListFilterWithUi(value: IFileListFilter): value is Required<IFile
export const useFiltersStore = defineStore('filters', () => {
const chips = ref<Record<string, IFileListFilterChip[]>>({})
const filters = ref<IFileListFilter[]>([])
- const filtersChanged = ref(false)
/**
* Currently active filter chips
@@ -77,7 +76,7 @@ export const useFiltersStore = defineStore('filters', () => {
* @private
*/
function onFilterUpdate() {
- filtersChanged.value = true
+ emit('files:filters:changed')
}
/**
@@ -122,7 +121,6 @@ export const useFiltersStore = defineStore('filters', () => {
chips,
filters,
filtersWithUI,
- filtersChanged,
// getters / computed
activeChips,
diff --git a/apps/files/src/views/FilesList.vue b/apps/files/src/views/FilesList.vue
index 0fa2b6abf35..253a3ec8196 100644
--- a/apps/files/src/views/FilesList.vue
+++ b/apps/files/src/views/FilesList.vue
@@ -432,10 +432,6 @@ export default defineComponent({
&& this.currentFolder && (this.currentFolder.permissions & Permission.SHARE) !== 0
},
- filtersChanged() {
- return this.filtersStore.filtersChanged
- },
-
showCustomEmptyView() {
return !this.loading && this.isEmptyDir && this.currentView?.emptyView !== undefined
},
@@ -516,13 +512,6 @@ export default defineComponent({
// Also refresh the filtered content
this.filterDirContent()
},
-
- filtersChanged() {
- if (this.filtersChanged) {
- this.filterDirContent()
- this.filtersStore.filtersChanged = false
- }
- },
},
async mounted() {
@@ -532,6 +521,9 @@ export default defineComponent({
// reload on settings change
subscribe('files:config:updated', this.fetchContent)
+ // filter content if filter were changed
+ subscribe('files:filters:changed', this.filterDirContent)
+
// Finally, fetch the current directory contents
await this.fetchContent()
if (this.fileId) {