forked from cybrespace/mastodon
		
	If a status is within 40 statuses from the top of a home feed, do not
reinsert it when someone boosts it
This commit is contained in:
		
							parent
							
								
									92569b1f0d
								
							
						
					
					
						commit
						7f0d1b8cc0
					
				
					 1 changed files with 12 additions and 2 deletions
				
			
		| 
						 | 
					@ -22,8 +22,18 @@ class FeedManager
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def push(timeline_type, account, status)
 | 
					  def push(timeline_type, account, status)
 | 
				
			||||||
    redis.zadd(key(timeline_type, account.id), status.id, status.reblog? ? status.reblog_of_id : status.id)
 | 
					    timeline_key = key(timeline_type, account.id)
 | 
				
			||||||
    trim(timeline_type, account.id)
 | 
					
 | 
				
			||||||
 | 
					    if status.reblog?
 | 
				
			||||||
 | 
					      # If the original status is within 40 statuses from top, do not re-insert it into the feed
 | 
				
			||||||
 | 
					      rank = redis.zrevrank(timeline_key, status.reblog_of_id)
 | 
				
			||||||
 | 
					      return if !rank.nil? && rank < 40
 | 
				
			||||||
 | 
					      redis.zadd(timeline_key, status.id, status.reblog_of_id)
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					      redis.zadd(timeline_key, status.id, status.id)
 | 
				
			||||||
 | 
					      trim(timeline_type, account.id)
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    broadcast(account.id, event: 'update', payload: inline_render(account, 'api/v1/statuses/show', status))
 | 
					    broadcast(account.id, event: 'update', payload: inline_render(account, 'api/v1/statuses/show', status))
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue