Merge pull request #54312 from nextcloud/fix/smarter-loadmore-unified-search

pull/52671/merge
John Molakvoæ 2025-08-08 10:38:15 +07:00 committed by GitHub
commit 7328754eb4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 8 additions and 15 deletions

@ -129,7 +129,7 @@
v-bind="result" />
</ul>
<div class="result-footer">
<NcButton type="tertiary-no-background" @click="loadMoreResultsForProvider(providerResult)">
<NcButton v-if="providerResult.results.length === providerResult.limit" type="tertiary-no-background" @click="loadMoreResultsForProvider(providerResult)">
{{ t('core', 'Load more results') }}
<template #icon>
<IconDotsHorizontal :size="20" />
@ -367,7 +367,7 @@ export default defineComponent({
this.$refs.searchInput?.focus()
})
},
find(query: string) {
find(query: string, providersToSearchOverride = null) {
if (query.length === 0) {
this.results = []
this.searching = false
@ -382,7 +382,7 @@ export default defineComponent({
this.searching = true
const newResults = []
const providersToSearch = this.filteredProviders.length > 0 ? this.filteredProviders : this.providers
const providersToSearch = providersToSearchOverride || (this.filteredProviders.length > 0 ? this.filteredProviders : this.providers)
const searchProvider = (provider) => {
const params = {
type: provider.searchFrom ?? provider.id,
@ -424,6 +424,7 @@ export default defineComponent({
newResults.push({
...provider,
results: response.data.ocs.data.entries,
limit: params.limit ?? 5,
})
unifiedSearchLogger.debug('Unified search results:', { results: this.results, newResults })
@ -513,15 +514,7 @@ export default defineComponent({
},
async loadMoreResultsForProvider(provider) {
this.providerResultLimit += 5
// Remove all other providers from filteredProviders except the current "loadmore" provider
this.filteredProviders = this.filteredProviders.filter(filteredProvider => filteredProvider.id === provider.id)
// Plugin filters may have extra parameters, so we need to keep them
// See method handlePluginFilter for more details
if (this.filteredProviders.length > 0 && this.filteredProviders[0].isPluginFilter) {
provider = this.filteredProviders[0]
}
this.addProviderFilter(provider, true)
this.find(this.searchQuery)
this.find(this.searchQuery, [provider])
},
addProviderFilter(providerFilter, loadMoreResultsForProvider = false) {
unifiedSearchLogger.debug('Applying provider filter', { providerFilter, loadMoreResultsForProvider })

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long