Age | Commit message (Collapse) | Author |
|
Pre-e12d7ba2, addHistoricalMessageEvents() triggered recounting and
emitting unreadMessagesChanged() even if the number remained the same.
This logic has been lost when refactoring the code; now it's back there
again.
|
|
|
|
|
|
|
|
This turns the design changes laid out in #464 comments to code:
- readMarker() now returns the fully read marker, unlike
readMarker(User*) that returns a read receipt, even when called for
the local user.
- Private::setLastReadEvent() -> setLastReadReceipt(), incorporating
the "promotion" logic from promoteReadReceipt().
- The above makes promoteReadReceipt() unneeded; the remaining piece
of logic that recalculates the number of unread messages is put to
its own method - Private::recalculateUnreadCount().
- Private::updateUnreadCount() is only slightly refreshed, continues
to use the fully read marker position (as it used to).
- Now that read receipts and fully read markers are managed separately,
Private::setLastReadReceipt() has got its counterpart,
Private::setFullyReadMarker(); both only update their respective
markers locally (emitting signals as needed), without interaction
with the homeserver.
- Private::markMessagesAsRead() now delegates updating the fully read
marker to setFullyReadMarker() and on top of that sends the new
fully read marker to the homeserver.
- Private::serverReadMarker -> fullyReadUntilEventId (to be really clear
what it stores).
- The hand-written PostReadMarkersJob is replaced with the generated
SetReadMarkerJob that does the same thing (and can update the read
receipt on top, though the current code doesn't use that).
|
|
|
|
|
|
A few months ago 3c85f049 introduced validation of user ids but the rest
of the library code wasn't updated to the fact that Connection::user()
may quite legitimately (if not routinely) return nullptr, leading to
crashes particularaly when malformed ids come from the wire. This commit
adds necessary checks before using the value returned from user().
Closes #456.
|
|
(cherry picked from commit 56c1db077b5da653c230432abc6c746318a77bed)
|
|
Also: use a structured binding for better code readability.
|
|
|
|
The change in 39830496 led to prev_content becoming a fallback not only
for displaying user names but also for storing them in the internal
member map, which is really not what was intended.
|
|
Changes in e81117fb exposed a flaw in EncryptionEvent causing assertion
failure when this event is default-initialised (i.e. no encryption).
|
|
|
|
This is to optimize a rather hot path creating stub events (for
member events in bigger rooms, in particular) when the event type is
known. Version 0.7 will have a completely different code based on
event content rather than event that will obviate stubs creation but
0.6.x can benefit from it.
|
|
...in one particular case, when trying to add a user to a room it's
already a member of.
|
|
|
|
|
|
|
|
The current mechanism relied on a complicated and fragile machinery
around setNameForRoom() and setAvatarForRoom() that maintained the
"most used" entity for a given user along with "other" ones. Given that
per-room avatars are pretty rare in Matrix, it's also been inefficient
as commit c69f100e shows. The new mechanism stores the "default" (as
per user profile) name and avatar and maintains a singleton map of
avatar objects across all users. Per-user profile only (normally) exists
for the local user so there's yet another inefficiency - this will be
fixed in 0.7 by introducing a special class for a user profile.
|
|
|
|
Sending them in the foreground causes Quaternion to throw scary
messages when read receipts don't go through while that's actually
not a big deal. Also, network traffic deprioritisation.
|
|
Edits are (normally) applied to some other event up the timeline,
therefore not displayed. Having [1] in unread counts while seeing
nothing in the timeline is quite confusing.
|
|
...meaning - errors from it should not throw up at a user, who has no
clue (they still should go to logs for investigation).
|
|
|
|
Closes #406.
|
|
operator+() is no more wanted with iterators on associative containers.
|
|
|
|
|
|
Pulled from Quaternion code.
|
|
|
|
When a message is redacted it has no sender. If it happens to be
in the bulkhead, Quotient tries to promote a read marker over it and
fails on being unable to resolve the author.
|
|
The method grew large and a bit unwieldy over the years.
|
|
Fixes #394.
|
|
fixing msc2432
|
|
Co-Authored-By: Kitsune Ral <Kitsune-Ral@users.sf.net>
|
|
|
|
|
|
|
|
|
|
* Make handling of edited messages MSC1849 compatible
Server side aggregation replaces `content` with `new_content` in
edited messages. The same must be done at client side on
incremental updates to keep timeline consistent.
As server side aggregations is in use by default from Synapse 1.2.0
this patch fixes a real issue.
|
|
Signed-off-by: Alexey Andreev <aa13q@ya.ru>
|
|
|
|
Signed-off-by: Alexey Andreev <aa13q@ya.ru>
|
|
Signed-off-by: Alexey Andreev <aa13q@ya.ru>
|
|
device_one_time_keys_count
Signed-off-by: Alexey Andreev <aa13q@ya.ru>
|
|
|
|
|
|
Specifically, handle colons and long file names gracefully. Closes #366.
|
|
|