Skip to content

Commit 2573784

Browse files
authored
Merge pull request #50153 from nextcloud/backport/50128/stable29
[stable29] feat: Adapt providers `disabled` property to match user applied filters
2 parents d36d029 + 2531769 commit 2573784

File tree

5 files changed

+25
-12
lines changed

5 files changed

+25
-12
lines changed

core/src/views/UnifiedSearchModal.vue

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
provider.id concatenated to provider.name is used to create the item id, if same then, there should be an issue. -->
2828
<NcActionButton v-for="provider in providers"
2929
:key="`${provider.id}-${provider.name.replace(/\s/g, '')}`"
30+
:disabled="provider.disabled"
3031
@click="addProviderFilter(provider)">
3132
<template #icon>
3233
<img :src="provider.icon" class="filter-button__icon" alt="">
@@ -299,22 +300,18 @@ export default {
299300
extraQueries: provider.extraParams,
300301
}
301302
303+
// This block of filter checks should be dynamic somehow and should be handled in
304+
// nextcloud/search lib
302305
if (filters.dateFilterIsApplied) {
303306
if (provider.filters.since && provider.filters.until) {
304307
params.since = this.dateFilter.startFrom
305308
params.until = this.dateFilter.endAt
306-
} else {
307-
// Date filter is applied but provider does not support it, no need to search provider
308-
return
309309
}
310310
}
311311
312312
if (filters.personFilterIsApplied) {
313313
if (provider.filters.person) {
314314
params.person = this.personFilter.user
315-
} else {
316-
// Person filter is applied but provider does not support it, no need to search provider
317-
return
318315
}
319316
}
320317
@@ -415,6 +412,10 @@ export default {
415412
this.filters[existingPersonFilter].name = person.displayName
416413
}
417414
415+
this.providers.forEach(async (provider, index) => {
416+
this.providers[index].disabled = !(await this.providerIsCompatibleWithFilters(provider, ['person']))
417+
})
418+
418419
this.debouncedFind(this.searchQuery)
419420
console.debug('Person filter applied', person)
420421
},
@@ -471,6 +472,7 @@ export default {
471472
if (filter.type === 'person') {
472473
this.personFilterIsApplied = false
473474
}
475+
this.enableAllProviders()
474476
break
475477
}
476478
}
@@ -509,6 +511,9 @@ export default {
509511
this.filters.push(this.dateFilter)
510512
}
511513
this.dateFilterIsApplied = true
514+
this.providers.forEach(async (provider, index) => {
515+
this.providers[index].disabled = !(await this.providerIsCompatibleWithFilters(provider, ['since', 'until']))
516+
})
512517
this.debouncedFind(this.searchQuery)
513518
},
514519
applyQuickDateRange(range) {
@@ -599,6 +604,14 @@ export default {
599604
600605
return flattenedArray
601606
},
607+
async providerIsCompatibleWithFilters(provider, filterIds) {
608+
return filterIds.every(filterId => provider.filters?.[filterId] !== undefined)
609+
},
610+
async enableAllProviders() {
611+
this.providers.forEach(async (_, index) => {
612+
this.providers[index].disabled = false
613+
})
614+
},
602615
focusInput() {
603616
this.$refs.searchInput.$el.children[0].children[0].focus()
604617
},

dist/core-unified-search.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/core-unified-search.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/workflowengine-workflowengine.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/workflowengine-workflowengine.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)