Merge pull request #2451 from matrix-org/erikj/add_state_to_timeline
Don't filter out current state events from timelinepull/2453/head
						commit
						77c81ca6ea
					
				|  | @ -293,6 +293,11 @@ class SyncHandler(object): | |||
|             timeline_limit = sync_config.filter_collection.timeline_limit() | ||||
|             block_all_timeline = sync_config.filter_collection.blocks_all_room_timeline() | ||||
| 
 | ||||
|             # Pull out the current state, as we always want to include those events | ||||
|             # in the timeline if they're there. | ||||
|             current_state_ids = yield self.state.get_current_state_ids(room_id) | ||||
|             current_state_ids = frozenset(current_state_ids.itervalues()) | ||||
| 
 | ||||
|             if recents is None or newly_joined_room or timeline_limit < len(recents): | ||||
|                 limited = True | ||||
|             else: | ||||
|  | @ -304,6 +309,7 @@ class SyncHandler(object): | |||
|                     self.store, | ||||
|                     sync_config.user.to_string(), | ||||
|                     recents, | ||||
|                     always_include_ids=current_state_ids, | ||||
|                 ) | ||||
|             else: | ||||
|                 recents = [] | ||||
|  | @ -339,6 +345,7 @@ class SyncHandler(object): | |||
|                     self.store, | ||||
|                     sync_config.user.to_string(), | ||||
|                     loaded_recents, | ||||
|                     always_include_ids=current_state_ids, | ||||
|                 ) | ||||
|                 loaded_recents.extend(recents) | ||||
|                 recents = loaded_recents | ||||
|  |  | |||
|  | @ -43,7 +43,8 @@ MEMBERSHIP_PRIORITY = ( | |||
| 
 | ||||
| 
 | ||||
| @defer.inlineCallbacks | ||||
| def filter_events_for_clients(store, user_tuples, events, event_id_to_state): | ||||
| def filter_events_for_clients(store, user_tuples, events, event_id_to_state, | ||||
|                               always_include_ids=frozenset()): | ||||
|     """ Returns dict of user_id -> list of events that user is allowed to | ||||
|     see. | ||||
| 
 | ||||
|  | @ -54,6 +55,8 @@ def filter_events_for_clients(store, user_tuples, events, event_id_to_state): | |||
|             * the user has not been a member of the room since the | ||||
|             given events | ||||
|         events ([synapse.events.EventBase]): list of events to filter | ||||
|         always_include_ids (set(event_id)): set of event ids to specifically | ||||
|             include (unless sender is ignored) | ||||
|     """ | ||||
|     forgotten = yield preserve_context_over_deferred(defer.gatherResults([ | ||||
|         defer.maybeDeferred( | ||||
|  | @ -91,6 +94,9 @@ def filter_events_for_clients(store, user_tuples, events, event_id_to_state): | |||
|         if not event.is_state() and event.sender in ignore_list: | ||||
|             return False | ||||
| 
 | ||||
|         if event.event_id in always_include_ids: | ||||
|             return True | ||||
| 
 | ||||
|         state = event_id_to_state[event.event_id] | ||||
| 
 | ||||
|         # get the room_visibility at the time of the event. | ||||
|  | @ -189,7 +195,8 @@ def filter_events_for_clients(store, user_tuples, events, event_id_to_state): | |||
| 
 | ||||
| 
 | ||||
| @defer.inlineCallbacks | ||||
| def filter_events_for_client(store, user_id, events, is_peeking=False): | ||||
| def filter_events_for_client(store, user_id, events, is_peeking=False, | ||||
|                              always_include_ids=frozenset()): | ||||
|     """ | ||||
|     Check which events a user is allowed to see | ||||
| 
 | ||||
|  | @ -213,6 +220,7 @@ def filter_events_for_client(store, user_id, events, is_peeking=False): | |||
|         types=types | ||||
|     ) | ||||
|     res = yield filter_events_for_clients( | ||||
|         store, [(user_id, is_peeking)], events, event_id_to_state | ||||
|         store, [(user_id, is_peeking)], events, event_id_to_state, | ||||
|         always_include_ids=always_include_ids, | ||||
|     ) | ||||
|     defer.returnValue(res.get(user_id, [])) | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Erik Johnston
						Erik Johnston