Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
synapse
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container Registry
Model registry
Operate
Terraform modules
Monitor
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Timo Ley
synapse
Commits
f74f48e9
Commit
f74f48e9
authored
9 years ago
by
Mark Haines
Browse files
Options
Downloads
Plain Diff
Merge pull request #341 from matrix-org/markjh/v2_sync_receipts
Include read receipts in v2 sync
parents
6a3a840b
a3bfef35
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
synapse/handlers/sync.py
+30
-15
30 additions, 15 deletions
synapse/handlers/sync.py
with
30 additions
and
15 deletions
synapse/handlers/sync.py
+
30
−
15
View file @
f74f48e9
...
...
@@ -185,7 +185,7 @@ class SyncHandler(BaseHandler):
"""
now_token
=
yield
self
.
event_sources
.
get_current_token
()
now_token
,
typing
_by_room
=
yield
self
.
typing
_by_room
(
now_token
,
ephemeral
_by_room
=
yield
self
.
ephemeral
_by_room
(
sync_config
,
now_token
)
...
...
@@ -222,7 +222,7 @@ class SyncHandler(BaseHandler):
sync_config
=
sync_config
,
now_token
=
now_token
,
timeline_since_token
=
timeline_since_token
,
typing_by_room
=
typing
_by_room
,
ephemeral_by_room
=
ephemeral
_by_room
,
tags_by_room
=
tags_by_room
,
)
joined
.
append
(
room_sync
)
...
...
@@ -257,7 +257,7 @@ class SyncHandler(BaseHandler):
@defer.inlineCallbacks
def
full_state_sync_for_joined_room
(
self
,
room_id
,
sync_config
,
now_token
,
timeline_since_token
,
typing
_by_room
,
tags_by_room
):
ephemeral
_by_room
,
tags_by_room
):
"""
Sync a room for a client which is starting without any state
Returns:
A Deferred JoinedSyncResult.
...
...
@@ -276,7 +276,7 @@ class SyncHandler(BaseHandler):
room_id
=
room_id
,
timeline
=
batch
,
state
=
current_state_events
,
ephemeral
=
typing
_by_room
.
get
(
room_id
,
[]),
ephemeral
=
ephemeral
_by_room
.
get
(
room_id
,
[]),
private_user_data
=
self
.
private_user_data_for_room
(
room_id
,
tags_by_room
),
...
...
@@ -293,8 +293,8 @@ class SyncHandler(BaseHandler):
return
private_user_data
@defer.inlineCallbacks
def
typing
_by_room
(
self
,
sync_config
,
now_token
,
since_token
=
None
):
"""
Get the
typing
events for each room the user is in
def
ephemeral
_by_room
(
self
,
sync_config
,
now_token
,
since_token
=
None
):
"""
Get the
ephemeral
events for each room the user is in
Args:
sync_config (SyncConfig): The flags, filters and user for the sync.
now_token (StreamToken): Where the server is currently up to.
...
...
@@ -316,12 +316,27 @@ class SyncHandler(BaseHandler):
)
now_token
=
now_token
.
copy_and_replace
(
"
typing_key
"
,
typing_key
)
typing_by_room
=
{
event
[
"
room_id
"
]:
[
event
]
for
event
in
typing
}
ephemeral_by_room
=
{}
for
event
in
typing
:
event
.
pop
(
"
room_id
"
)
logger
.
debug
(
"
Typing %r
"
,
typing_by_room
)
room_id
=
event
.
pop
(
"
room_id
"
)
ephemeral_by_room
.
setdefault
(
room_id
,
[]).
append
(
event
)
receipt_key
=
since_token
.
receipt_key
if
since_token
else
"
0
"
receipt_source
=
self
.
event_sources
.
sources
[
"
receipt
"
]
receipts
,
receipt_key
=
yield
receipt_source
.
get_new_events_for_user
(
user
=
sync_config
.
user
,
from_key
=
receipt_key
,
limit
=
sync_config
.
filter
.
ephemeral_limit
(),
)
now_token
=
now_token
.
copy_and_replace
(
"
receipt_key
"
,
receipt_key
)
for
event
in
receipts
:
room_id
=
event
.
pop
(
"
room_id
"
)
ephemeral_by_room
.
setdefault
(
room_id
,
[]).
append
(
event
)
defer
.
returnValue
((
now_token
,
typing
_by_room
))
defer
.
returnValue
((
now_token
,
ephemeral
_by_room
))
@defer.inlineCallbacks
def
full_state_sync_for_archived_room
(
self
,
room_id
,
sync_config
,
...
...
@@ -366,7 +381,7 @@ class SyncHandler(BaseHandler):
)
now_token
=
now_token
.
copy_and_replace
(
"
presence_key
"
,
presence_key
)
now_token
,
typing
_by_room
=
yield
self
.
typing
_by_room
(
now_token
,
ephemeral
_by_room
=
yield
self
.
ephemeral
_by_room
(
sync_config
,
now_token
,
since_token
)
...
...
@@ -437,7 +452,7 @@ class SyncHandler(BaseHandler):
limited
=
limited
,
),
state
=
state
,
ephemeral
=
typing
_by_room
.
get
(
room_id
,
[]),
ephemeral
=
ephemeral
_by_room
.
get
(
room_id
,
[]),
private_user_data
=
self
.
private_user_data_for_room
(
room_id
,
tags_by_room
),
...
...
@@ -457,7 +472,7 @@ class SyncHandler(BaseHandler):
for
room_id
in
joined_room_ids
:
room_sync
=
yield
self
.
incremental_sync_with_gap_for_room
(
room_id
,
sync_config
,
since_token
,
now_token
,
typing
_by_room
,
tags_by_room
ephemeral
_by_room
,
tags_by_room
)
if
room_sync
:
joined
.
append
(
room_sync
)
...
...
@@ -528,7 +543,7 @@ class SyncHandler(BaseHandler):
@defer.inlineCallbacks
def
incremental_sync_with_gap_for_room
(
self
,
room_id
,
sync_config
,
since_token
,
now_token
,
typing
_by_room
,
tags_by_room
):
ephemeral
_by_room
,
tags_by_room
):
"""
Get the incremental delta needed to bring the client up to date for
the room. Gives the client the most recent events and the changes to
state.
...
...
@@ -569,7 +584,7 @@ class SyncHandler(BaseHandler):
room_id
=
room_id
,
timeline
=
batch
,
state
=
state_events_delta
,
ephemeral
=
typing
_by_room
.
get
(
room_id
,
[]),
ephemeral
=
ephemeral
_by_room
.
get
(
room_id
,
[]),
private_user_data
=
self
.
private_user_data_for_room
(
room_id
,
tags_by_room
),
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment