mirror of
				https://github.com/matrix-org/synapse.git
				synced 2025-11-04 10:11:05 +01:00 
			
		
		
		
	Make presence use cached users/hosts in room
This commit is contained in:
		
							parent
							
								
									b8492b6c2f
								
							
						
					
					
						commit
						ec5c4499f4
					
				@ -285,7 +285,7 @@ class TransactionQueue(object):
 | 
				
			|||||||
        Args:
 | 
					        Args:
 | 
				
			||||||
            states (list(UserPresenceState))
 | 
					            states (list(UserPresenceState))
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
        hosts_and_states = yield get_interested_remotes(self.store, states)
 | 
					        hosts_and_states = yield get_interested_remotes(self.store, states, self.state)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        for destinations, states in hosts_and_states:
 | 
					        for destinations, states in hosts_and_states:
 | 
				
			||||||
            for destination in destinations:
 | 
					            for destination in destinations:
 | 
				
			||||||
 | 
				
			|||||||
@ -780,12 +780,12 @@ class PresenceHandler(object):
 | 
				
			|||||||
        # don't need to send to local clients here, as that is done as part
 | 
					        # don't need to send to local clients here, as that is done as part
 | 
				
			||||||
        # of the event stream/sync.
 | 
					        # of the event stream/sync.
 | 
				
			||||||
        # TODO: Only send to servers not already in the room.
 | 
					        # TODO: Only send to servers not already in the room.
 | 
				
			||||||
        user_ids = yield self.store.get_users_in_room(room_id)
 | 
					 | 
				
			||||||
        if self.is_mine(user):
 | 
					        if self.is_mine(user):
 | 
				
			||||||
            state = yield self.current_state_for_user(user.to_string())
 | 
					            state = yield self.current_state_for_user(user.to_string())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            self._push_to_remotes([state])
 | 
					            self._push_to_remotes([state])
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
 | 
					            user_ids = yield self.store.get_users_in_room(room_id)
 | 
				
			||||||
            user_ids = filter(self.is_mine_id, user_ids)
 | 
					            user_ids = filter(self.is_mine_id, user_ids)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            states = yield self.current_state_for_users(user_ids)
 | 
					            states = yield self.current_state_for_users(user_ids)
 | 
				
			||||||
@ -1322,7 +1322,7 @@ def get_interested_parties(store, states):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@defer.inlineCallbacks
 | 
					@defer.inlineCallbacks
 | 
				
			||||||
def get_interested_remotes(store, states):
 | 
					def get_interested_remotes(store, states, state_handler):
 | 
				
			||||||
    """Given a list of presence states figure out which remote servers
 | 
					    """Given a list of presence states figure out which remote servers
 | 
				
			||||||
    should be sent which.
 | 
					    should be sent which.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1345,7 +1345,7 @@ def get_interested_remotes(store, states):
 | 
				
			|||||||
    room_ids_to_states, users_to_states = yield get_interested_parties(store, states)
 | 
					    room_ids_to_states, users_to_states = yield get_interested_parties(store, states)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for room_id, states in room_ids_to_states.iteritems():
 | 
					    for room_id, states in room_ids_to_states.iteritems():
 | 
				
			||||||
        hosts = yield store.get_hosts_in_room(room_id)
 | 
					        hosts = yield state_handler.get_current_hosts_in_room(room_id)
 | 
				
			||||||
        hosts_and_states.append((hosts, states))
 | 
					        hosts_and_states.append((hosts, states))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for user_id, states in users_to_states.iteritems():
 | 
					    for user_id, states in users_to_states.iteritems():
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user