Age | Commit message (Collapse) | Author |
|
|
|
|
|
This is a usual situation when a membership type is undefined; and
the current code constructs _a lot_ of stub events by loading them from
empty JSON. So just silence those warnings for now.
|
|
|
|
MemberEventContent: displayname and avatarUrl are now Omittables;
CS API doesn't guarantee their presence (see also
https://github.com/matrix-org/matrix-doc/issues/1375) but Quotient
used to assume they are always there, causing #412.
RoomMemberEvent: displayname() -> newDisplayName() and
avatarUrl() -> newAvatarUrl(), to emphasise the actual semantics (and
also the changed interface). The old signatures still work but are
deprecated.
Instead of roomMembername() (with weird camel-casing), three new
methods in addition to safeMemberName() are introduced to Room:
- memberName() - produces the "best known" display name for a
given member; User::name() uses it to avoid the pitfall of #412.
- disambiguatedMemberName() - this is what roomMembername() used to be;
not recommended for direct use when UI is concerned.
- safeMemberName() - remains as is, with the fix to the documentation
that used to mislead that the function returns HTML-escaped content
(it didn't, and doesn't).
- htmlSafeMemberName() - does what safeMemberName() claimed to do.
Respectively, memberNames() is deprecated in favor of safeMemberNames()
and htmlSafeMemberNames(). The corresponding Q_PROPERTY uses
safeMemberNames() now.
Similar to memberName(), Room has got memberAvatarUrl() to spare
User class from diving into Room state to find the member avatar URL.
Closes #412.
|
|
|
|
This is generated by GTAD 0.7.1 (to be released), based on the changed
registration.yaml (to be committed and pulled).
|
|
|
|
The first character inside the fragment should be /
(cherry picked from commit 948be2ef2bf04e306fbb0e2c3e0a98f4151337a7)
|
|
(cherry picked from commit 0e87640560343c15b0a218796509d2d94e1a5c77)
|
|
May lead to new crashes due to nullptr returned from Connection::user()
on more utterly invalid content from the wire that the library still
doesn't properly invalidate. This has long been quite a good case for
exceptions, or another error-handling framework: Connection::user() can
return nullptr either when out of memory or when the id is invalid or
empty, and other places are likely to treat invalid ids in different
ways but probably just hope that memory exhaustion "never happens", or
try to handle it in a quite different way than an empty or invalid id.
Something to think of in 0.7.
(cherry picked from commit 3c85f049389dec3b0ee6406f0be2cfaf0089f1fe)
|
|
can be applied.
|
|
|
|
...instead of a complicated explicit code converting from JSON
to varianthash to hash.
|
|
See https://github.com/matrix-org/matrix-doc/issues/2717
|
|
Qt 5.15 deprecates bearer management.
|
|
|
|
|
|
The Connection object has quite few uses after logging out - neither
rooms nor users under it no more represent actual situation, and the
object cannot be cleanly reused for a new login (also, the use case
for that is pretty dubious). This doesn't cover the case when
the session has been forcibly logged-out by the server (causing
loginError() to be emitted) - in that case re-authentication
is an expected flow.
|
|
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 kitsune-benchmark-set_ForRoom branch 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 that will be fixed further down the road by introducing
a separate user profile class.
|
|
The most frequent occurence of IncorrectResponse so far is a proxy/CDN
failure. This is not a grave error; there's a chance that the retry will
succeed. In the worst case the job will fail after 3 identical errors
(except SyncJob that will try to get through forever - but SyncJob
failures should still be indicated in the client's UI in some
non-intrusive way).
|
|
|
|
|
|
|
|
|
|
The override adds the event's origin timestamp
|
|
|
|
|
|
User::updateName() usually operates on a specific room; setting an
object name from an arbitrary (whichever came last at any point in time)
room member event for a given user does not look like a good idea.
And having it in User::updateAvatar() seems to be a copy-paste fallout.
|
|
|
|
Users are always parented to their Connection; there's no need to store
a pointer to the connection on top of the one already stored by QObject.
|
|
Bridge postfixes stopped being a thing long ago; since then, bridged()
has nothing but an empty string, and rawName() coincides with name().
|
|
So that room avatar events could also be sent, not only received.
|
|
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.
|
|
Matrix URIs and resolving them
|
|
|
|
Closes #314.
|
|
|
|
To enable reporting when the action is incorrect.
|
|
|
|
|
|
|
|
Introducing the uniform way to resolve Matrix URIs and identifiers
to Room/User objects, passing an optional event id (if supplied) to
the client-defined handler. Just call ResourceResolver::visitResource()
or ResourceResolver::openResource() and you'll have that string parsed
and dispatched where you need.
|
|
Long run tests over 2+ days kept crashing before this commit but
stopped crashing with pipelining on and HTTP2 off.
|
|
...meaning - errors from it should not throw up at a user, who has no
clue (they still should go to logs for investigation).
|
|
|
|
This reverts commit b1071cf34b86685c3cdb5004d6112881966a7ce6. Passing
-1 to sync() and, respectively, to SyncJob does not add any timeout;
however, careful reading of the spec reveals that the default value
for the timeout (0) means to return as soon as possible, not as late
as possible. As a consequence, syncLoop() without parameters initiates
a sync polling frenzy, with the client sending a new request as soon as
the previous returns, while the server returns the request as soon as
it practically can, not as soon as another event for the client comes
around.
To fix this, the default value for syncLoop() is changed to 30 seconds.
The recently added msecBetween parameter is abolished; we really don't
want to steer people to classic polling from long polling.
|
|
For matrix-doc, specifically, it is master (5cb4b086) merged with
https://github.com/matrix-org/matrix-doc/pull/2518.
|