This reverts commit e9eb3549d3.
			
			
				pull/9947/head
			
			
		
							parent
							
								
									a8803e2b6e
								
							
						
					
					
						commit
						eba431c539
					
				|  | @ -1 +0,0 @@ | |||
| Omit empty fields from the `/sync` response.  Contributed by @deepbluev7. | ||||
|  | @ -14,7 +14,6 @@ | |||
| 
 | ||||
| import itertools | ||||
| import logging | ||||
| from collections import defaultdict | ||||
| from typing import TYPE_CHECKING, Tuple | ||||
| 
 | ||||
| from synapse.api.constants import PresenceState | ||||
|  | @ -230,49 +229,24 @@ class SyncRestServlet(RestServlet): | |||
|         ) | ||||
| 
 | ||||
|         logger.debug("building sync response dict") | ||||
| 
 | ||||
|         response: dict = defaultdict(dict) | ||||
|         response["next_batch"] = await sync_result.next_batch.to_string(self.store) | ||||
| 
 | ||||
|         if sync_result.account_data: | ||||
|             response["account_data"] = {"events": sync_result.account_data} | ||||
|         if sync_result.presence: | ||||
|             response["presence"] = SyncRestServlet.encode_presence( | ||||
|                 sync_result.presence, time_now | ||||
|             ) | ||||
| 
 | ||||
|         if sync_result.to_device: | ||||
|             response["to_device"] = {"events": sync_result.to_device} | ||||
| 
 | ||||
|         if sync_result.device_lists.changed: | ||||
|             response["device_lists"]["changed"] = list(sync_result.device_lists.changed) | ||||
|         if sync_result.device_lists.left: | ||||
|             response["device_lists"]["left"] = list(sync_result.device_lists.left) | ||||
| 
 | ||||
|         if sync_result.device_one_time_keys_count: | ||||
|             response[ | ||||
|                 "device_one_time_keys_count" | ||||
|             ] = sync_result.device_one_time_keys_count | ||||
|         if sync_result.device_unused_fallback_key_types: | ||||
|             response[ | ||||
|                 "org.matrix.msc2732.device_unused_fallback_key_types" | ||||
|             ] = sync_result.device_unused_fallback_key_types | ||||
| 
 | ||||
|         if joined: | ||||
|             response["rooms"]["join"] = joined | ||||
|         if invited: | ||||
|             response["rooms"]["invite"] = invited | ||||
|         if archived: | ||||
|             response["rooms"]["leave"] = archived | ||||
| 
 | ||||
|         if sync_result.groups.join: | ||||
|             response["groups"]["join"] = sync_result.groups.join | ||||
|         if sync_result.groups.invite: | ||||
|             response["groups"]["invite"] = sync_result.groups.invite | ||||
|         if sync_result.groups.leave: | ||||
|             response["groups"]["leave"] = sync_result.groups.leave | ||||
| 
 | ||||
|         return response | ||||
|         return { | ||||
|             "account_data": {"events": sync_result.account_data}, | ||||
|             "to_device": {"events": sync_result.to_device}, | ||||
|             "device_lists": { | ||||
|                 "changed": list(sync_result.device_lists.changed), | ||||
|                 "left": list(sync_result.device_lists.left), | ||||
|             }, | ||||
|             "presence": SyncRestServlet.encode_presence(sync_result.presence, time_now), | ||||
|             "rooms": {"join": joined, "invite": invited, "leave": archived}, | ||||
|             "groups": { | ||||
|                 "join": sync_result.groups.join, | ||||
|                 "invite": sync_result.groups.invite, | ||||
|                 "leave": sync_result.groups.leave, | ||||
|             }, | ||||
|             "device_one_time_keys_count": sync_result.device_one_time_keys_count, | ||||
|             "org.matrix.msc2732.device_unused_fallback_key_types": sync_result.device_unused_fallback_key_types, | ||||
|             "next_batch": await sync_result.next_batch.to_string(self.store), | ||||
|         } | ||||
| 
 | ||||
|     @staticmethod | ||||
|     def encode_presence(events, time_now): | ||||
|  |  | |||
|  | @ -37,7 +37,35 @@ class FilterTestCase(unittest.HomeserverTestCase): | |||
|         channel = self.make_request("GET", "/sync") | ||||
| 
 | ||||
|         self.assertEqual(channel.code, 200) | ||||
|         self.assertIn("next_batch", channel.json_body) | ||||
|         self.assertTrue( | ||||
|             { | ||||
|                 "next_batch", | ||||
|                 "rooms", | ||||
|                 "presence", | ||||
|                 "account_data", | ||||
|                 "to_device", | ||||
|                 "device_lists", | ||||
|             }.issubset(set(channel.json_body.keys())) | ||||
|         ) | ||||
| 
 | ||||
|     def test_sync_presence_disabled(self): | ||||
|         """ | ||||
|         When presence is disabled, the key does not appear in /sync. | ||||
|         """ | ||||
|         self.hs.config.use_presence = False | ||||
| 
 | ||||
|         channel = self.make_request("GET", "/sync") | ||||
| 
 | ||||
|         self.assertEqual(channel.code, 200) | ||||
|         self.assertTrue( | ||||
|             { | ||||
|                 "next_batch", | ||||
|                 "rooms", | ||||
|                 "account_data", | ||||
|                 "to_device", | ||||
|                 "device_lists", | ||||
|             }.issubset(set(channel.json_body.keys())) | ||||
|         ) | ||||
| 
 | ||||
| 
 | ||||
| class SyncFilterTestCase(unittest.HomeserverTestCase): | ||||
|  |  | |||
|  | @ -306,9 +306,8 @@ class TestResourceLimitsServerNoticesWithRealRooms(unittest.HomeserverTestCase): | |||
| 
 | ||||
|         channel = self.make_request("GET", "/sync?timeout=0", access_token=tok) | ||||
| 
 | ||||
|         self.assertNotIn( | ||||
|             "rooms", channel.json_body, "Got invites without server notice" | ||||
|         ) | ||||
|         invites = channel.json_body["rooms"]["invite"] | ||||
|         self.assertEqual(len(invites), 0, invites) | ||||
| 
 | ||||
|     def test_invite_with_notice(self): | ||||
|         """Tests that, if the MAU limit is hit, the server notices user invites each user | ||||
|  | @ -365,8 +364,7 @@ class TestResourceLimitsServerNoticesWithRealRooms(unittest.HomeserverTestCase): | |||
|             # We could also pick another user and sync with it, which would return an | ||||
|             # invite to a system notices room, but it doesn't matter which user we're | ||||
|             # using so we use the last one because it saves us an extra sync. | ||||
|             if "rooms" in channel.json_body: | ||||
|                 invites = channel.json_body["rooms"]["invite"] | ||||
|             invites = channel.json_body["rooms"]["invite"] | ||||
| 
 | ||||
|         # Make sure we have an invite to process. | ||||
|         self.assertEqual(len(invites), 1, invites) | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Erik Johnston
						Erik Johnston