Age | Commit message (Collapse) | Author |
|
|
|
|
|
Closes #481. Note: the library doesn't even have the API in User
to set per-room avatars; one still can achieve that by calling
Room::setState<RoomMemberEvent>(...) though (and it's likely to be _the_
recommended way to deal with per-room user profiles in 0.7, with User
being entirely deprecated).
|
|
Only API-preserving changes are included in this branch (0.7 will have
all changes).
|
|
Among things affecting Quotient, the update involved moving API files
from api/ to data/api/, adding extensions to event schema files, and
switching from ReStructured Text to Markdown as a lightweight markup
language. This commit updates the build system and GTAD configuration
to accommodate for these.
The build system is also more robust now in choosing whether the
update-api target should be provided. Previously the target was provided
whenever GTAD_PATH and MATRIX_DOC_PATH were specified, even if they
did not point to anything valid. CMake now checks that MATRIX_DOC_PATH
is an actual directory and that GTAD_PATH points to an actual file.
|
|
|
|
This is an adjustment to the earlier fix of #471: if a join is
immediately followed by a leave (e.g. from another client/bot - you
can't do it programmatically from libQuotient) the sync may bring the
room already in the Leave state; therefore `joinRoom` should not
impose the state but rather ask `provideRoom` to create a `Join` room -
just as it's designed when passed an empty `joinState`.
|
|
|
|
GitHub images no more have GCC 8.
(cherry picked from commit f89ece678c47a54a28c91c2d0ced65ba3e9a6540)
|
|
An alternative implementation of #463 (and thanks to Carl for spotting
the original problem).
|
|
|
|
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.
|
|
|
|
Replace references to Spectral with NeoChat as a more lively and better
supported client; deprecate qmake; remove a mention that libQuotient
uses LGPL-2.1-only because it's not true, according to ./COPYING
|
|
It's been 2 years, time to move on.
|
|
|
|
As per the latest iteration of MSC2312, room/, user/ and event/ are
only supported for parsing and replication but not for emitting from
Matrix identifiers.
|
|
The new formatted_body was not included into new content on edit
due to badly constructed json.
(cherry picked from commit df6b2d31ec8f2f5890826719e960f450a4968f22)
|
|
With this patch it looks like:
"m.relates_to": {
"m.in_reply_to": {
"event_id": "$another:event.com"
}
}
instead of:
"m.relates_to": {
"event_id": "$another:event.com",
"rel_type": "m.in_reply_to"
},
So it fits the specification by now.
https://matrix.org/docs/spec/client_server/r0.6.1#rich-replies
(cherry picked from commit b850edadde2299b122a5cd17da85e943430e43b7)
|
|
This avoids a corner case when a login flows job finishes (or worse,
goes for a retry) while the homeserver is (being) resolved, yielding
the Connection object in an inconsistent state to the client.
|
|
|
|
|
|
|
|
|
|
The current Quotest gets stuck somewhere, and the its big internal 3-minute watchdog doesn't cut it for some reason. While investigating that, an external timeout would be quite handy.
|
|
Now that we've crowded it with a few synthetic users, lazy-loading of
members doesn't some other room to get tested. Bonus:
Connection::roomByAlias() has its own very simple test now.
|
|
See #437 for the discussion.
(cherry picked from commit 6101971af86fdecd084759aa039b9d20a9d662a7)
|
|
So just reset the base URL and return, with no error signals.
|
|
Fixes #437.
|
|
|
|
...because finished() includes abandoning and should only be relevant
when lifecycle issues are involved.
|
|
[skip ci]
|
|
Cherry-picked and squashed from 2fed7f8a and 23cf8bec.
|
|
Mostly taken from #434, except removed E2EE matrix variants
since E2EE is not ready on 0.6.x and is discouraged from using.
|
|
(cherry picked from commit 0f974c0f96f29035ee766e8913504fed4a4903a5)
|
|
1. resolveServer() now emits homeserverChanged() even when there's no
.well-known file found.
2. checkAndConnect() entirely removed from the header file.
3. Sunny-day scenario for assumeIdentity() is now asynchronous,
triggering a call to /whoami to double-check the user.
(based on commit 6c9ff40dbd91cc4966f0ecf9ed817efc2495a2fb to master)
|
|
(cherry picked from commit 56c1db077b5da653c230432abc6c746318a77bed)
|
|
...to show the sunny-day case.
(cherry picked from commit 5d15e3b23649a54abdb3812c10f4a7d2ce07d7dd)
|
|
Usually QNetworkAccessManager expects the user to delete the replies, but when the QNetworkAccessManager itself is deleted it deletes all pending replies (https://code.woboq.org/qt5/qtbase/src/network/access/qnetworkaccessmanager.cpp.html#529).
This can lead to use-after-free crashes when d->reply is accessed. By putting the reply into a QPointer the exiting if(d->reply) checks can work properly.
(cherry picked from commit 9d854e778d8d6ef8e03e1ea74fe958675b24fd45)
|
|
Notably, recommend using loginFlowsChanged() rather than
homeserverChanged() to detect when a Connection object is ready for
a login sequence. Related: #427.
(cherry picked from commit 8981c5451ac378f16d5b57d7460d053e2cbc666e)
|
|
|
|
[skip ci]
|
|
Previously the code was waiting until an arbitrary event is sent.
|
|
Also: use a structured binding for better code readability.
|
|
|
|
|
|
Proxy servers may return arbitrary HTML, for one example; so don't
expect to find a valid JSON object in whatever non-empty payload
next to a non-2xx HTTP code. Fixes #421.
|
|
Part of the fix for #421.
|
|
|
|
DeleteDeviceJob requires authentication, but the JSON data is not added for DELETE requests.
Since QNetworkAccessManager::deleteResource does not support body data, we need to send a custom request.
|