mirror of
https://github.com/element-hq/synapse.git
synced 2025-03-14 09:45:51 +00:00
Merge fe47578dd7
into 59a15da433
This commit is contained in:
commit
1c95b2e284
5 changed files with 50 additions and 1 deletions
1
changelog.d/18196.feature
Normal file
1
changelog.d/18196.feature
Normal file
|
@ -0,0 +1 @@
|
|||
Add `forget_forced_upon_leave` capability as per [MSC4267](https://github.com/matrix-org/matrix-spec-proposals/pull/4267).
|
|
@ -560,3 +560,6 @@ class ExperimentalConfig(Config):
|
|||
|
||||
# MSC4076: Add `disable_badge_count`` to pusher configuration
|
||||
self.msc4076_enabled: bool = experimental.get("msc4076_enabled", False)
|
||||
|
||||
# MSC4267: Automatically forgetting rooms on leave
|
||||
self.msc4267_enabled: bool = experimental.get("msc4267_enabled", False)
|
||||
|
|
|
@ -85,4 +85,4 @@ class RoomConfig(Config):
|
|||
|
||||
# When enabled, users will forget rooms when they leave them, either via a
|
||||
# leave, kick or ban.
|
||||
self.forget_on_leave = config.get("forget_rooms_on_leave", False)
|
||||
self.forget_on_leave: bool = config.get("forget_rooms_on_leave", False)
|
||||
|
|
|
@ -109,6 +109,11 @@ class CapabilitiesRestServlet(RestServlet):
|
|||
"disallowed"
|
||||
] = disallowed
|
||||
|
||||
if self.config.experimental.msc4267_enabled:
|
||||
response["capabilities"]["org.matrix.msc4267.forget_forced_upon_leave"] = {
|
||||
"enabled": self.config.room.forget_on_leave,
|
||||
}
|
||||
|
||||
return HTTPStatus.OK, response
|
||||
|
||||
|
||||
|
|
|
@ -264,3 +264,43 @@ class CapabilitiesTestCase(unittest.HomeserverTestCase):
|
|||
|
||||
self.assertEqual(channel.code, HTTPStatus.OK)
|
||||
self.assertTrue(capabilities["m.get_login_token"]["enabled"])
|
||||
|
||||
@override_config(
|
||||
{
|
||||
"experimental_features": {"msc4267_enabled": True},
|
||||
"forget_rooms_on_leave": True,
|
||||
}
|
||||
)
|
||||
def test_get_forget_forced_upon_leave_with_auto_forget(self) -> None:
|
||||
# Server auto-forgets on /leave, expect enabled client capability
|
||||
access_token = self.get_success(
|
||||
self.auth_handler.create_access_token_for_user_id(
|
||||
self.user, device_id=None, valid_until_ms=None
|
||||
)
|
||||
)
|
||||
channel = self.make_request("GET", self.url, access_token=access_token)
|
||||
capabilities = channel.json_body["capabilities"]
|
||||
self.assertEqual(channel.code, HTTPStatus.OK)
|
||||
self.assertTrue(
|
||||
capabilities["org.matrix.msc4267.forget_forced_upon_leave"]["enabled"]
|
||||
)
|
||||
|
||||
@override_config(
|
||||
{
|
||||
"experimental_features": {"msc4267_enabled": True},
|
||||
"forget_rooms_on_leave": False,
|
||||
}
|
||||
)
|
||||
def test_get_forget_forced_upon_leave_without_auto_forget(self) -> None:
|
||||
# Server doesn't auto-forget on /leave, expect disabled client capability
|
||||
access_token = self.get_success(
|
||||
self.auth_handler.create_access_token_for_user_id(
|
||||
self.user, device_id=None, valid_until_ms=None
|
||||
)
|
||||
)
|
||||
channel = self.make_request("GET", self.url, access_token=access_token)
|
||||
capabilities = channel.json_body["capabilities"]
|
||||
self.assertEqual(channel.code, HTTPStatus.OK)
|
||||
self.assertFalse(
|
||||
capabilities["org.matrix.msc4267.forget_forced_upon_leave"]["enabled"]
|
||||
)
|
||||
|
|
Loading…
Add table
Reference in a new issue