Skip to content
This repository has been archived by the owner on Apr 26, 2024. It is now read-only.

Revert "Leave out optional keys from /sync (#9919)" #9940

Merged
merged 1 commit into from
May 6, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion changelog.d/9919.feature

This file was deleted.

62 changes: 18 additions & 44 deletions synapse/rest/client/v2_alpha/sync.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@

import itertools
import logging
from collections import defaultdict
from typing import TYPE_CHECKING, Tuple

from synapse.api.constants import PresenceState
Expand Down Expand Up @@ -230,49 +229,24 @@ async def encode_response(self, time_now, sync_result, access_token_id, filter):
)

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):
Expand Down
30 changes: 29 additions & 1 deletion tests/rest/client/v2_alpha/test_sync.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,35 @@ def test_sync_argless(self):
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):
Expand Down
8 changes: 3 additions & 5 deletions tests/server_notices/test_resource_limits_server_notices.py
Original file line number Diff line number Diff line change
Expand Up @@ -306,9 +306,8 @@ def test_no_invite_without_notice(self):

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
Expand Down Expand Up @@ -365,8 +364,7 @@ def _trigger_notice_and_join(self):
# 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)
Expand Down