@ -763,17 +763,34 @@ export default class HomeView extends Vue {
* Called by FeedFilters component when filters change
* Called by FeedFilters component when filters change
* /
* /
async reloadFeedOnChange ( ) {
async reloadFeedOnChange ( ) {
const settings = await this . $accountSettings ( this . activeDid , {
logger . info ( "[HomeView] 🔄 reloadFeedOnChange() called - refreshing feed" ) ;
filterFeedByVisible : false ,
filterFeedByNearby : false ,
/ / G e t c u r r e n t s e t t i n g s w i t h o u t o v e r r i d i n g w i t h d e f a u l t s
const settings = await this . $accountSettings ( this . activeDid ) ;
logger . info ( "[HomeView] 📊 Current filter settings:" , {
filterFeedByVisible : settings . filterFeedByVisible ,
filterFeedByNearby : settings . filterFeedByNearby ,
searchBoxes : settings . searchBoxes ? . length || 0 ,
} ) ;
} ) ;
this . isFeedFilteredByVisible = ! ! settings . filterFeedByVisible ;
this . isFeedFilteredByVisible = ! ! settings . filterFeedByVisible ;
this . isFeedFilteredByNearby = ! ! settings . filterFeedByNearby ;
this . isFeedFilteredByNearby = ! ! settings . filterFeedByNearby ;
this . isAnyFeedFilterOn = checkIsAnyFeedFilterOn ( settings ) ;
this . isAnyFeedFilterOn = checkIsAnyFeedFilterOn ( settings ) ;
logger . info ( "[HomeView] 🎯 Updated filter states:" , {
isFeedFilteredByVisible : this . isFeedFilteredByVisible ,
isFeedFilteredByNearby : this . isFeedFilteredByNearby ,
isAnyFeedFilterOn : this . isAnyFeedFilterOn ,
} ) ;
this . feedData = [ ] ;
this . feedData = [ ] ;
this . feedPreviousOldestId = undefined ;
this . feedPreviousOldestId = undefined ;
logger . info ( "[HomeView] 🧹 Cleared feed data, calling updateAllFeed()" ) ;
await this . updateAllFeed ( ) ;
await this . updateAllFeed ( ) ;
logger . info ( "[HomeView] ✅ Feed refresh completed" ) ;
}
}
/ * *
/ * *
@ -852,6 +869,14 @@ export default class HomeView extends Vue {
* - this . feedLastViewedClaimId ( via updateFeedLastViewedId )
* - this . feedLastViewedClaimId ( via updateFeedLastViewedId )
* /
* /
async updateAllFeed ( ) {
async updateAllFeed ( ) {
logger . info ( "[HomeView] 🚀 updateAllFeed() called" , {
isFeedLoading : this . isFeedLoading ,
currentFeedDataLength : this . feedData . length ,
isAnyFeedFilterOn : this . isAnyFeedFilterOn ,
isFeedFilteredByVisible : this . isFeedFilteredByVisible ,
isFeedFilteredByNearby : this . isFeedFilteredByNearby ,
} ) ;
this . isFeedLoading = true ;
this . isFeedLoading = true ;
let endOfResults = true ;
let endOfResults = true ;
@ -860,21 +885,37 @@ export default class HomeView extends Vue {
this . apiServer ,
this . apiServer ,
this . feedPreviousOldestId ,
this . feedPreviousOldestId ,
) ;
) ;
logger . info ( "[HomeView] 📡 Retrieved gives from API" , {
resultsCount : results . data . length ,
endOfResults ,
} ) ;
if ( results . data . length > 0 ) {
if ( results . data . length > 0 ) {
endOfResults = false ;
endOfResults = false ;
/ / g a t h e r a n y c o n t a c t s t h a t u s e r h a s b l o c k e d f r o m v i e w
/ / g a t h e r a n y c o n t a c t s t h a t u s e r h a s b l o c k e d f r o m v i e w
await this . processFeedResults ( results . data ) ;
await this . processFeedResults ( results . data ) ;
await this . updateFeedLastViewedId ( results . data ) ;
await this . updateFeedLastViewedId ( results . data ) ;
logger . info ( "[HomeView] 📝 Processed feed results" , {
processedCount : this . feedData . length ,
} ) ;
}
}
} catch ( e ) {
} catch ( e ) {
logger . error ( "[HomeView] ❌ Error in updateAllFeed:" , e ) ;
this . handleFeedError ( e ) ;
this . handleFeedError ( e ) ;
}
}
if ( this . feedData . length === 0 && ! endOfResults ) {
if ( this . feedData . length === 0 && ! endOfResults ) {
logger . info ( "[HomeView] 🔄 No results after filtering, retrying..." ) ;
await this . updateAllFeed ( ) ;
await this . updateAllFeed ( ) ;
}
}
this . isFeedLoading = false ;
this . isFeedLoading = false ;
logger . info ( "[HomeView] ✅ updateAllFeed() completed" , {
finalFeedDataLength : this . feedData . length ,
isFeedLoading : this . isFeedLoading ,
} ) ;
}
}
/ * *
/ * *
@ -899,12 +940,35 @@ export default class HomeView extends Vue {
* @ param records Array of feed records to process
* @ param records Array of feed records to process
* /
* /
private async processFeedResults ( records : GiveSummaryRecord [ ] ) {
private async processFeedResults ( records : GiveSummaryRecord [ ] ) {
logger . info ( "[HomeView] 📝 Processing feed results:" , {
inputRecords : records . length ,
currentFilters : {
isAnyFeedFilterOn : this . isAnyFeedFilterOn ,
isFeedFilteredByVisible : this . isFeedFilteredByVisible ,
isFeedFilteredByNearby : this . isFeedFilteredByNearby ,
} ,
} ) ;
let processedCount = 0 ;
let filteredCount = 0 ;
for ( const record of records ) {
for ( const record of records ) {
const processedRecord = await this . processRecord ( record ) ;
const processedRecord = await this . processRecord ( record ) ;
if ( processedRecord ) {
if ( processedRecord ) {
this . feedData . push ( processedRecord ) ;
this . feedData . push ( processedRecord ) ;
processedCount ++ ;
} else {
filteredCount ++ ;
}
}
}
}
logger . info ( "[HomeView] 📊 Feed processing results:" , {
processed : processedCount ,
filtered : filteredCount ,
total : records . length ,
finalFeedLength : this . feedData . length ,
} ) ;
this . feedPreviousOldestId = records [ records . length - 1 ] . jwtId ;
this . feedPreviousOldestId = records [ records . length - 1 ] . jwtId ;
}
}
@ -938,7 +1002,7 @@ export default class HomeView extends Vue {
* - this . feedData ( via createFeedRecord )
* - this . feedData ( via createFeedRecord )
*
*
* @ param record The record to process
* @ param record The record to process
* @ returns Processed record with contact info if it passes filters , null otherwise
* @ returns Processed record if it passes filters , null otherwise
* /
* /
private async processRecord (
private async processRecord (
record : GiveSummaryRecord ,
record : GiveSummaryRecord ,
@ -948,13 +1012,28 @@ export default class HomeView extends Vue {
const recipientDid = this . extractRecipientDid ( claim ) ;
const recipientDid = this . extractRecipientDid ( claim ) ;
const fulfillsPlan = await this . getFulfillsPlan ( record ) ;
const fulfillsPlan = await this . getFulfillsPlan ( record ) ;
/ / L o g r e c o r d d e t a i l s f o r d e b u g g i n g
logger . debug ( "[HomeView] 🔍 Processing record:" , {
recordId : record . jwtId ,
hasFulfillsPlan : ! ! fulfillsPlan ,
fulfillsPlanHandleId : record . fulfillsPlanHandleId ,
filters : {
isAnyFeedFilterOn : this . isAnyFeedFilterOn ,
isFeedFilteredByVisible : this . isFeedFilteredByNearby ,
isFeedFilteredByNearby : this . isFeedFilteredByNearby ,
} ,
} ) ;
if ( ! this . shouldIncludeRecord ( record , fulfillsPlan ) ) {
if ( ! this . shouldIncludeRecord ( record , fulfillsPlan ) ) {
logger . debug ( "[HomeView] ❌ Record filtered out:" , record . jwtId ) ;
return null ;
return null ;
}
}
const provider = this . extractProvider ( claim ) ;
const provider = this . extractProvider ( claim ) ;
const providedByPlan = await this . getProvidedByPlan ( provider ) ;
const providedByPlan = await this . getProvidedByPlan ( provider ) ;
logger . debug ( "[HomeView] ✅ Record included:" , record . jwtId ) ;
return this . createFeedRecord (
return this . createFeedRecord (
record ,
record ,
claim ,
claim ,
@ -1103,6 +1182,22 @@ export default class HomeView extends Vue {
}
}
}
}
/ / A d d d e b u g l o g g i n g f o r n e a r b y f i l t e r
if ( this . isFeedFilteredByNearby && record . fulfillsPlanHandleId ) {
logger . debug ( "[HomeView] 🔍 Nearby filter check:" , {
recordId : record . jwtId ,
hasFulfillsPlan : ! ! fulfillsPlan ,
hasLocation : ! ! ( fulfillsPlan ? . locLat && fulfillsPlan ? . locLon ) ,
location : fulfillsPlan
? { lat : fulfillsPlan . locLat , lon : fulfillsPlan . locLon }
: null ,
inSearchBox : fulfillsPlan
? this . latLongInAnySearchBox ( fulfillsPlan . locLat , fulfillsPlan . locLon )
: null ,
finalResult : anyMatch ,
} ) ;
}
return anyMatch ;
return anyMatch ;
}
}
@ -1538,7 +1633,10 @@ export default class HomeView extends Vue {
* Called by template click handler
* Called by template click handler
* /
* /
openFeedFilters ( ) {
openFeedFilters ( ) {
( this . $refs . feedFilters as FeedFilters ) . open ( this . reloadFeedOnChange ) ;
( this . $refs . feedFilters as FeedFilters ) . open (
this . reloadFeedOnChange ,
this . activeDid ,
) ;
}
}
/ * *
/ * *