Browse Source

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>
pull/50919/head
Ferdinand Thiessen 1 year ago
parent
commit
f7f41b6cb4
No known key found for this signature in database GPG Key ID: 45FAE7268762B400
  1. 2
      apps/files/src/eventbus.d.ts
  2. 6
      apps/files/src/store/filters.ts
  3. 14
      apps/files/src/views/FilesList.vue

2
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

6
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,

14
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) {

Loading…
Cancel
Save