Skip to content

Commit 8273699

Browse files
committed
fix: Use searchFrom property for client side plugins
The client-side plugin `in-folder` uses the `files` provider, this makes it overlap with the main files provider itself. This change follows eecda06 after it was discovered that some apps/providers like `dav` use providers from another app like `contacts` Signed-off-by: nfebe <fenn25.fn@gmail.com> Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
1 parent c1f9114 commit 8273699

File tree

6 files changed

+22
-16
lines changed

6 files changed

+22
-16
lines changed

apps/files/src/plugins/search/folderSearch.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ function init() {
2323
OCA.UnifiedSearch.registerFilterAction({
2424
id: 'in-folder',
2525
appId: 'files',
26+
searchFrom: 'files',
2627
label: t('files', 'In folder'),
2728
icon: imagePath('files', 'app.svg'),
2829
callback: (showFilePicker: boolean = true) => {
@@ -38,6 +39,7 @@ function init() {
3839
emit('nextcloud:unified-search:add-filter', {
3940
id: 'in-folder',
4041
appId: 'files',
42+
searchFrom: 'files',
4143
payload: folder,
4244
filterUpdateText: t('files', 'Search in folder: {folder}', { folder: folder.basename }),
4345
filterParams: { path: folder.path },

core/src/components/UnifiedSearch/UnifiedSearchModal.vue

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -121,22 +121,22 @@
121121
</h3>
122122
<div v-for="providerResult in results" :key="providerResult.id" class="result">
123123
<h4 :id="`unified-search-result-${providerResult.id}`" class="result-title">
124-
{{ providerResult.provider }}
124+
{{ providerResult.name }}
125125
</h4>
126126
<ul class="result-items" :aria-labelledby="`unified-search-result-${providerResult.id}`">
127127
<SearchResult v-for="(result, index) in providerResult.results"
128128
:key="index"
129129
v-bind="result" />
130130
</ul>
131131
<div class="result-footer">
132-
<NcButton type="tertiary-no-background" @click="loadMoreResultsForProvider(providerResult.id)">
132+
<NcButton type="tertiary-no-background" @click="loadMoreResultsForProvider(providerResult)">
133133
{{ t('core', 'Load more results') }}
134134
<template #icon>
135135
<IconDotsHorizontal :size="20" />
136136
</template>
137137
</NcButton>
138138
<NcButton v-if="providerResult.inAppSearch" alignment="end-reverse" type="tertiary-no-background">
139-
{{ t('core', 'Search in') }} {{ providerResult.provider }}
139+
{{ t('core', 'Search in') }} {{ providerResult.name }}
140140
<template #icon>
141141
<IconArrowRight :size="20" />
142142
</template>
@@ -374,7 +374,7 @@ export default defineComponent({
374374
const providersToSearch = this.filteredProviders.length > 0 ? this.filteredProviders : this.providers
375375
const searchProvider = (provider, filters) => {
376376
const params = {
377-
type: provider.id,
377+
type: provider.searchFrom ?? provider.id,
378378
query,
379379
cursor: null,
380380
extraQueries: provider.extraParams,
@@ -406,7 +406,9 @@ export default defineComponent({
406406
newResults.push({
407407
id: provider.id,
408408
appId: provider.appId,
409-
provider: provider.name,
409+
searchFrom: provider.searchFrom,
410+
icon: provider.icon,
411+
name: provider.name,
410412
inAppSearch: provider.inAppSearch,
411413
results: response.data.ocs.data.entries,
412414
})
@@ -500,11 +502,11 @@ export default defineComponent({
500502
this.debouncedFind(this.searchQuery)
501503
unifiedSearchLogger.debug('Person filter applied', { person })
502504
},
503-
loadMoreResultsForProvider(providerId) {
505+
async loadMoreResultsForProvider(provider) {
504506
this.providerResultLimit += 5
505-
// If user wants more result for a particular filter remove other filters???
506-
this.filters = this.filters.filter(filter => filter.id === providerId)
507-
const provider = this.providers.find(provider => provider.id === providerId)
507+
// If load more result for filter, remove other filters
508+
this.filters = this.filters.filter(filter => filter.id === provider.id)
509+
this.filteredProviders = this.filteredProviders.filter(filteredProvider => filteredProvider.id === provider.id)
508510
this.addProviderFilter(provider, true)
509511
},
510512
addProviderFilter(providerFilter, loadMoreResultsForProvider = false) {
@@ -531,6 +533,7 @@ export default defineComponent({
531533
this.filteredProviders.push({
532534
id: providerFilter.id,
533535
appId: providerFilter.appId,
536+
searchFrom: providerFilter.searchFrom,
534537
name: providerFilter.name,
535538
icon: providerFilter.icon,
536539
type: providerFilter.type || 'provider',

core/src/store/unified-search-external-filters.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ export const useSearchStore = defineStore('search', {
1010
}),
1111

1212
actions: {
13-
registerExternalFilter({ id, appId, label, callback, icon }) {
14-
this.externalFilters.push({ id, appId, name: label, callback, icon, isPluginFilter: true })
13+
registerExternalFilter({ id, appId, searchFrom, label, callback, icon }) {
14+
this.externalFilters.push({ id, appId, searchFrom, name: label, callback, icon, isPluginFilter: true })
1515
},
1616
},
1717
})

core/src/unified-search.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ Vue.mixin({
3636
interface UnifiedSearchAction {
3737
id: string;
3838
appId: string;
39+
searchFrom: string;
3940
label: string;
4041
icon: string;
4142
callback: () => void;
@@ -44,9 +45,9 @@ interface UnifiedSearchAction {
4445
// Register the add/register filter action API globally
4546
window.OCA = window.OCA || {}
4647
window.OCA.UnifiedSearch = {
47-
registerFilterAction: ({ id, appId, label, callback, icon }: UnifiedSearchAction) => {
48+
registerFilterAction: ({ id, appId, searchFrom, label, callback, icon }: UnifiedSearchAction) => {
4849
const searchStore = useSearchStore()
49-
searchStore.registerExternalFilter({ id, appId, label, callback, icon })
50+
searchStore.registerExternalFilter({ id, appId, searchFrom, label, callback, icon })
5051
},
5152
}
5253

dist/files-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/files-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.

0 commit comments

Comments
 (0)