diff options
author | Ferdinand Thiessen <opensource@fthiessen.de> | 2025-02-28 10:42:24 +0100 |
---|---|---|
committer | Ferdinand Thiessen <opensource@fthiessen.de> | 2025-02-28 10:43:26 +0100 |
commit | f7f41b6cb41a601c23ac73096e35df98848c627e (patch) | |
tree | cbadc933c5c7ea5f5784fc51bfadf36cba996230 /apps/files/src | |
parent | a6735473974de149e886749c995e9d161649d0bc (diff) | |
download | nextcloud-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.ts | 2 | ||||
-rw-r--r-- | apps/files/src/store/filters.ts | 6 | ||||
-rw-r--r-- | apps/files/src/views/FilesList.vue | 14 |
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) { |