mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-10-31 04:32:25 -05:00 
			
		
		
		
	ensure we filter home timeline statuses on local only
This commit is contained in:
		
					parent
					
						
							
								7cd2269cde
							
						
					
				
			
			
				commit
				
					
						c92bb83298
					
				
			
		
					 5 changed files with 46 additions and 14 deletions
				
			
		|  | @ -40,6 +40,20 @@ func (p *Processor) HomeTimelineGet( | ||||||
| 	*apimodel.PageableResponse, | 	*apimodel.PageableResponse, | ||||||
| 	gtserror.WithCode, | 	gtserror.WithCode, | ||||||
| ) { | ) { | ||||||
|  | 
 | ||||||
|  | 	var pageQuery url.Values | ||||||
|  | 	var postFilter func(*gtsmodel.Status) bool | ||||||
|  | 	if local { | ||||||
|  | 		// Set local = true query. | ||||||
|  | 		pageQuery = localOnlyTrue | ||||||
|  | 		postFilter = func(s *gtsmodel.Status) bool { | ||||||
|  | 			return *s.Local | ||||||
|  | 		} | ||||||
|  | 	} else { | ||||||
|  | 		// Set local = false query. | ||||||
|  | 		pageQuery = localOnlyFalse | ||||||
|  | 		postFilter = nil | ||||||
|  | 	} | ||||||
| 	return p.getStatusTimeline(ctx, | 	return p.getStatusTimeline(ctx, | ||||||
| 
 | 
 | ||||||
| 		// Auth'd | 		// Auth'd | ||||||
|  | @ -60,19 +74,7 @@ func (p *Processor) HomeTimelineGet( | ||||||
| 		// page query flag, (this map | 		// page query flag, (this map | ||||||
| 		// later gets copied before | 		// later gets copied before | ||||||
| 		// any further usage). | 		// any further usage). | ||||||
| 		func() url.Values { | 		pageQuery, | ||||||
| 			var pageQuery url.Values |  | ||||||
| 
 |  | ||||||
| 			if local { |  | ||||||
| 				// Set local = true query. |  | ||||||
| 				pageQuery = localOnlyTrue |  | ||||||
| 			} else { |  | ||||||
| 				// Set local = false query. |  | ||||||
| 				pageQuery = localOnlyFalse |  | ||||||
| 			} |  | ||||||
| 
 |  | ||||||
| 			return pageQuery |  | ||||||
| 		}(), |  | ||||||
| 
 | 
 | ||||||
| 		// Status filter context. | 		// Status filter context. | ||||||
| 		statusfilter.FilterContextHome, | 		statusfilter.FilterContextHome, | ||||||
|  | @ -82,7 +84,7 @@ func (p *Processor) HomeTimelineGet( | ||||||
| 			return p.state.DB.GetHomeTimeline(ctx, requester.ID, pg) | 			return p.state.DB.GetHomeTimeline(ctx, requester.ID, pg) | ||||||
| 		}, | 		}, | ||||||
| 
 | 
 | ||||||
| 		// Pre-filtering function, | 		// Filtering function, | ||||||
| 		// i.e. filter before caching. | 		// i.e. filter before caching. | ||||||
| 		func(s *gtsmodel.Status) bool { | 		func(s *gtsmodel.Status) bool { | ||||||
| 
 | 
 | ||||||
|  | @ -93,5 +95,9 @@ func (p *Processor) HomeTimelineGet( | ||||||
| 			} | 			} | ||||||
| 			return !ok | 			return !ok | ||||||
| 		}, | 		}, | ||||||
|  | 
 | ||||||
|  | 		// Post filtering funtion, | ||||||
|  | 		// i.e. filter after caching. | ||||||
|  | 		postFilter, | ||||||
| 	) | 	) | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -106,5 +106,9 @@ func (p *Processor) ListTimelineGet( | ||||||
| 			} | 			} | ||||||
| 			return !ok | 			return !ok | ||||||
| 		}, | 		}, | ||||||
|  | 
 | ||||||
|  | 		// Post filtering funtion, | ||||||
|  | 		// i.e. filter after caching. | ||||||
|  | 		nil, | ||||||
| 	) | 	) | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -97,6 +97,10 @@ func (p *Processor) publicTimelineGet( | ||||||
| 			} | 			} | ||||||
| 			return !ok | 			return !ok | ||||||
| 		}, | 		}, | ||||||
|  | 
 | ||||||
|  | 		// Post filtering funtion, | ||||||
|  | 		// i.e. filter after caching. | ||||||
|  | 		nil, | ||||||
| 	) | 	) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -149,5 +153,9 @@ func (p *Processor) localTimelineGet( | ||||||
| 			} | 			} | ||||||
| 			return !ok | 			return !ok | ||||||
| 		}, | 		}, | ||||||
|  | 
 | ||||||
|  | 		// Post filtering funtion, | ||||||
|  | 		// i.e. filter after caching. | ||||||
|  | 		nil, | ||||||
| 	) | 	) | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -105,6 +105,10 @@ func (p *Processor) TagTimelineGet( | ||||||
| 			} | 			} | ||||||
| 			return !ok | 			return !ok | ||||||
| 		}, | 		}, | ||||||
|  | 
 | ||||||
|  | 		// Post filtering funtion, | ||||||
|  | 		// i.e. filter after caching. | ||||||
|  | 		nil, | ||||||
| 	) | 	) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -71,6 +71,7 @@ func (p *Processor) getStatusTimeline( | ||||||
| 	filterCtx statusfilter.FilterContext, | 	filterCtx statusfilter.FilterContext, | ||||||
| 	loadPage func(*paging.Page) (statuses []*gtsmodel.Status, err error), | 	loadPage func(*paging.Page) (statuses []*gtsmodel.Status, err error), | ||||||
| 	filter func(*gtsmodel.Status) (delete bool), | 	filter func(*gtsmodel.Status) (delete bool), | ||||||
|  | 	postFilter func(*gtsmodel.Status) (remove bool), | ||||||
| ) ( | ) ( | ||||||
| 	*apimodel.PageableResponse, | 	*apimodel.PageableResponse, | ||||||
| 	gtserror.WithCode, | 	gtserror.WithCode, | ||||||
|  | @ -133,6 +134,15 @@ func (p *Processor) getStatusTimeline( | ||||||
| 
 | 
 | ||||||
| 		// Frontend API model preparation function. | 		// Frontend API model preparation function. | ||||||
| 		func(status *gtsmodel.Status) (*apimodel.Status, error) { | 		func(status *gtsmodel.Status) (*apimodel.Status, error) { | ||||||
|  | 
 | ||||||
|  | 			// Check if status needs filtering OUTSIDE of caching stage. | ||||||
|  | 			// TODO: this will be moved to separate postFilter hook when | ||||||
|  | 			// all filtering has been removed from the type converter. | ||||||
|  | 			if postFilter != nil && postFilter(status) { | ||||||
|  | 				return nil, nil | ||||||
|  | 			} | ||||||
|  | 
 | ||||||
|  | 			// Finally, pass status to get converted to API model. | ||||||
| 			apiStatus, err := p.converter.StatusToAPIStatus(ctx, | 			apiStatus, err := p.converter.StatusToAPIStatus(ctx, | ||||||
| 				status, | 				status, | ||||||
| 				requester, | 				requester, | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue