diff options
-rw-r--r-- | apps/files/src/plugins/search/folderSearch.ts | 2 | ||||
-rw-r--r-- | core/src/components/UnifiedSearch/UnifiedSearchModal.vue | 21 | ||||
-rw-r--r-- | core/src/store/unified-search-external-filters.js | 4 | ||||
-rw-r--r-- | core/src/unified-search.ts | 5 |
4 files changed, 19 insertions, 13 deletions
diff --git a/apps/files/src/plugins/search/folderSearch.ts b/apps/files/src/plugins/search/folderSearch.ts index 33dae31995c..626b1daa72b 100644 --- a/apps/files/src/plugins/search/folderSearch.ts +++ b/apps/files/src/plugins/search/folderSearch.ts @@ -23,6 +23,7 @@ function init() { OCA.UnifiedSearch.registerFilterAction({ id: 'in-folder', appId: 'files', + searchFrom: 'files', label: t('files', 'In folder'), icon: imagePath('files', 'app.svg'), callback: (showFilePicker: boolean = true) => { @@ -38,6 +39,7 @@ function init() { emit('nextcloud:unified-search:add-filter', { id: 'in-folder', appId: 'files', + searchFrom: 'files', payload: folder, filterUpdateText: t('files', 'Search in folder: {folder}', { folder: folder.basename }), filterParams: { path: folder.path }, diff --git a/core/src/components/UnifiedSearch/UnifiedSearchModal.vue b/core/src/components/UnifiedSearch/UnifiedSearchModal.vue index bfb7bd03484..08c3657ce78 100644 --- a/core/src/components/UnifiedSearch/UnifiedSearchModal.vue +++ b/core/src/components/UnifiedSearch/UnifiedSearchModal.vue @@ -121,7 +121,7 @@ </h3> <div v-for="providerResult in results" :key="providerResult.id" class="result"> <h4 :id="`unified-search-result-${providerResult.id}`" class="result-title"> - {{ providerResult.provider }} + {{ providerResult.name }} </h4> <ul class="result-items" :aria-labelledby="`unified-search-result-${providerResult.id}`"> <SearchResult v-for="(result, index) in providerResult.results" @@ -129,14 +129,14 @@ v-bind="result" /> </ul> <div class="result-footer"> - <NcButton type="tertiary-no-background" @click="loadMoreResultsForProvider(providerResult.id)"> + <NcButton type="tertiary-no-background" @click="loadMoreResultsForProvider(providerResult)"> {{ t('core', 'Load more results') }} <template #icon> <IconDotsHorizontal :size="20" /> </template> </NcButton> <NcButton v-if="providerResult.inAppSearch" alignment="end-reverse" type="tertiary-no-background"> - {{ t('core', 'Search in') }} {{ providerResult.provider }} + {{ t('core', 'Search in') }} {{ providerResult.name }} <template #icon> <IconArrowRight :size="20" /> </template> @@ -374,7 +374,7 @@ export default defineComponent({ const providersToSearch = this.filteredProviders.length > 0 ? this.filteredProviders : this.providers const searchProvider = (provider, filters) => { const params = { - type: provider.id, + type: provider.searchFrom ?? provider.id, query, cursor: null, extraQueries: provider.extraParams, @@ -406,7 +406,9 @@ export default defineComponent({ newResults.push({ id: provider.id, appId: provider.appId, - provider: provider.name, + searchFrom: provider.searchFrom, + icon: provider.icon, + name: provider.name, inAppSearch: provider.inAppSearch, results: response.data.ocs.data.entries, }) @@ -500,11 +502,11 @@ export default defineComponent({ this.debouncedFind(this.searchQuery) unifiedSearchLogger.debug('Person filter applied', { person }) }, - loadMoreResultsForProvider(providerId) { + async loadMoreResultsForProvider(provider) { this.providerResultLimit += 5 - // If user wants more result for a particular filter remove other filters??? - this.filters = this.filters.filter(filter => filter.id === providerId) - const provider = this.providers.find(provider => provider.id === providerId) + // If load more result for filter, remove other filters + this.filters = this.filters.filter(filter => filter.id === provider.id) + this.filteredProviders = this.filteredProviders.filter(filteredProvider => filteredProvider.id === provider.id) this.addProviderFilter(provider, true) }, addProviderFilter(providerFilter, loadMoreResultsForProvider = false) { @@ -531,6 +533,7 @@ export default defineComponent({ this.filteredProviders.push({ id: providerFilter.id, appId: providerFilter.appId, + searchFrom: providerFilter.searchFrom, name: providerFilter.name, icon: providerFilter.icon, type: providerFilter.type || 'provider', diff --git a/core/src/store/unified-search-external-filters.js b/core/src/store/unified-search-external-filters.js index fdc2ba047ca..55de34b8b2a 100644 --- a/core/src/store/unified-search-external-filters.js +++ b/core/src/store/unified-search-external-filters.js @@ -10,8 +10,8 @@ export const useSearchStore = defineStore('search', { }), actions: { - registerExternalFilter({ id, appId, label, callback, icon }) { - this.externalFilters.push({ id, appId, name: label, callback, icon, isPluginFilter: true }) + registerExternalFilter({ id, appId, searchFrom, label, callback, icon }) { + this.externalFilters.push({ id, appId, searchFrom, name: label, callback, icon, isPluginFilter: true }) }, }, }) diff --git a/core/src/unified-search.ts b/core/src/unified-search.ts index fd5f9cb1fdf..a13b1036da1 100644 --- a/core/src/unified-search.ts +++ b/core/src/unified-search.ts @@ -36,6 +36,7 @@ Vue.mixin({ interface UnifiedSearchAction { id: string; appId: string; + searchFrom: string; label: string; icon: string; callback: () => void; @@ -44,9 +45,9 @@ interface UnifiedSearchAction { // Register the add/register filter action API globally window.OCA = window.OCA || {} window.OCA.UnifiedSearch = { - registerFilterAction: ({ id, appId, label, callback, icon }: UnifiedSearchAction) => { + registerFilterAction: ({ id, appId, searchFrom, label, callback, icon }: UnifiedSearchAction) => { const searchStore = useSearchStore() - searchStore.registerExternalFilter({ id, appId, label, callback, icon }) + searchStore.registerExternalFilter({ id, appId, searchFrom, label, callback, icon }) }, } |