@ -252,8 +252,6 @@ export default defineComponent({
providerResultLimit : 5 ,
dateFilter : { id : 'date' , type : 'date' , text : '' , startFrom : null , endAt : null } ,
personFilter : { id : 'person' , type : 'person' , name : '' } ,
dateFilterIsApplied : false ,
personFilterIsApplied : false ,
filteredProviders : [ ] ,
searching : false ,
searchQuery : '' ,
@ -372,7 +370,7 @@ export default defineComponent({
this . searching = true
const newResults = [ ]
const providersToSearch = this . filteredProviders . length > 0 ? this . filteredProviders : this . providers
const searchProvider = ( provider , filters ) => {
const searchProvider = ( provider ) => {
const params = {
type : provider . searchFrom ? ? provider . id ,
query ,
@ -382,18 +380,25 @@ export default defineComponent({
/ / T h i s b l o c k o f f i l t e r c h e c k s s h o u l d b e d y n a m i c s o m e h o w a n d s h o u l d b e h a n d l e d i n
/ / n e x t c l o u d / s e a r c h l i b
if ( filters . dateFilterIsApplied ) {
if ( provider . filters ? . since && provider . filters ? . until ) {
params . since = this . dateFilter . startFrom
params . until = this . dateFilter . endAt
}
}
const activeFilters = this . filters . filter ( filter => {
return filter . type !== 'provider' && this . providerIsCompatibleWithFilters ( provider , [ filter . type ] )
} )
if ( filters . personFilterIsApplied ) {
if ( provider . filters ? . person ) {
params . person = this . personFilter . user
activeFilters . forEach ( filter => {
switch ( filter . type ) {
case 'date' :
if ( provider . filters ? . since && provider . filters ? . until ) {
params . since = this . dateFilter . startFrom
params . until = this . dateFilter . endAt
}
break
case 'person' :
if ( provider . filters ? . person ) {
params . person = this . personFilter . user
}
break
}
}
} )
if ( this . providerResultLimit > 5 ) {
params . limit = this . providerResultLimit
@ -404,12 +409,7 @@ export default defineComponent({
request ( ) . then ( ( response ) => {
newResults . push ( {
id : provider . id ,
appId : provider . appId ,
searchFrom : provider . searchFrom ,
icon : provider . icon ,
name : provider . name ,
inAppSearch : provider . inAppSearch ,
... provider ,
results : response . data . ocs . data . entries ,
} )
@ -419,12 +419,8 @@ export default defineComponent({
this . searching = false
} )
}
providersToSearch . forEach ( provider => {
const dateFilterIsApplied = this . dateFilterIsApplied
const personFilterIsApplied = this . personFilterIsApplied
searchProvider ( provider , { dateFilterIsApplied , personFilterIsApplied } )
} )
providersToSearch . forEach ( searchProvider )
} ,
updateResults ( newResults ) {
let updatedResults = [ ... this . results ]
@ -482,7 +478,7 @@ export default defineComponent({
} )
} ,
applyPersonFilter ( person ) {
this . personFilterIsApplied = true
const existingPersonFilter = this . filters . findIndex ( filter => filter . id === person . id )
if ( existingPersonFilter === - 1 ) {
this . personFilter . id = person . id
@ -504,8 +500,7 @@ export default defineComponent({
} ,
async loadMoreResultsForProvider ( provider ) {
this . providerResultLimit += 5
/ / I f l o a d m o r e r e s u l t f o r f i l t e r , r e m o v e o t h e r f i l t e r s
this . filters = this . filters . filter ( filter => filter . id === provider . id )
/ / R e m o v e a l l o t h e r p r o v i d e r s f r o m f i l t e r e d P r o v i d e r s e x c e p t t h e c u r r e n t " l o a d m o r e " p r o v i d e r
this . filteredProviders = this . filteredProviders . filter ( filteredProvider => filteredProvider . id === provider . id )
/ / P l u g i n f i l t e r s m a y h a v e e x t r a p a r a m e t e r s , s o w e n e e d t o k e e p t h e m
/ / S e e m e t h o d h a n d l e P l u g i n F i l t e r f o r m o r e d e t a i l s
@ -513,6 +508,7 @@ export default defineComponent({
provider = this . filteredProviders [ 0 ]
}
this . addProviderFilter ( provider , true )
this . find ( this . searchQuery )
} ,
addProviderFilter ( providerFilter , loadMoreResultsForProvider = false ) {
unifiedSearchLogger . debug ( 'Applying provider filter' , { providerFilter , loadMoreResultsForProvider } )
@ -556,14 +552,10 @@ export default defineComponent({
unifiedSearchLogger . debug ( 'Search filters (recently removed)' , { filters : this . filters } )
} else {
/ / R e m o v e n o n p r o v i d e r f i l t e r s s u c h a s d a t e a n d p e r s o n f i l t e r s
for ( let i = 0 ; i < this . filters . length ; i ++ ) {
/ / R e m o v e d a t e a n d p e r s o n f i l t e r
if ( this . filters [ i ] . id === 'date' || this . filters [ i ] . id === filter . id ) {
this . dateFilterIsApplied = false
if ( this . filters [ i ] . id === filter . id ) {
this . filters . splice ( i , 1 )
if ( filter . type === 'person' ) {
this . personFilterIsApplied = false
}
this . enableAllProviders ( )
break
}
@ -602,7 +594,7 @@ export default defineComponent({
} else {
this . filters . push ( this . dateFilter )
}
this . dateFilterIsApplied = true
this . providers . forEach ( async ( provider , index ) => {
this . providers [ index ] . disabled = ! ( await this . providerIsCompatibleWithFilters ( provider , [ 'since' , 'until' ] ) )
} )