Skip to content
Snippets Groups Projects
Commit ce19fc0f authored by Mark Haines's avatar Mark Haines
Browse files

Merge pull request #294 from matrix-org/markjh/initial_sync_archived_flag

Add a flag to initial sync to include we want rooms that the user has left
parents 91482cd6 51ef7256
No related branches found
No related tags found
No related merge requests found
......@@ -324,7 +324,8 @@ class MessageHandler(BaseHandler):
)
@defer.inlineCallbacks
def snapshot_all_rooms(self, user_id=None, pagin_config=None, as_client_event=True):
def snapshot_all_rooms(self, user_id=None, pagin_config=None,
as_client_event=True, include_archived=False):
"""Retrieve a snapshot of all rooms the user is invited or has joined.
This snapshot may include messages for all rooms where the user is
......@@ -335,17 +336,19 @@ class MessageHandler(BaseHandler):
pagin_config (synapse.api.streams.PaginationConfig): The pagination
config used to determine how many messages *PER ROOM* to return.
as_client_event (bool): True to get events in client-server format.
include_archived (bool): True to get rooms that the user has left
Returns:
A list of dicts with "room_id" and "membership" keys for all rooms
the user is currently invited or joined in on. Rooms where the user
is joined on, may return a "messages" key with messages, depending
on the specified PaginationConfig.
"""
memberships = [Membership.INVITE, Membership.JOIN]
if include_archived:
memberships.append(Membership.LEAVE)
room_list = yield self.store.get_rooms_for_user_where_membership_is(
user_id=user_id,
membership_list=[
Membership.INVITE, Membership.JOIN, Membership.LEAVE
]
user_id=user_id, membership_list=memberships
)
user = UserID.from_string(user_id)
......
......@@ -29,10 +29,12 @@ class InitialSyncRestServlet(ClientV1RestServlet):
as_client_event = "raw" not in request.args
pagination_config = PaginationConfig.from_request(request)
handler = self.handlers.message_handler
include_archived = request.args.get("archived", None) == ["true"]
content = yield handler.snapshot_all_rooms(
user_id=user.to_string(),
pagin_config=pagination_config,
as_client_event=as_client_event
as_client_event=as_client_event,
include_archived=include_archived,
)
defer.returnValue((200, content))
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment