aboutsummaryrefslogtreecommitdiff
path: root/lib
AgeCommit message (Collapse)Author
2020-06-19Fix FTBFS and warnings with E2EE switched onKitsune Ral
2020-06-19Revert adding a pause between syncs, use sane timeout defaultsKitsune Ral
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.
2020-06-19csapi/: generated using the latest GTAD and matrix-docKitsune Ral
For matrix-doc, specifically, it is master (5cb4b086) merged with https://github.com/matrix-org/matrix-doc/pull/2518.
2020-06-14quotient_common.h for common namespace thingsKitsune Ral
The two main cases for this header file are: * namespace QMatrixClient = Quotient should occur exactly once, to respect ODR. * Q_NAMESPACE for namespace Quotient (to enable Q_ENUM_NS, particularly) must be defined exactly once, for the same reason.
2020-06-12The previous commit is incomplete, this completes itKitsune Ral
2020-06-12Connection::isLoggedIn() and more robust logout()Kitsune Ral
isLoggedIn() is just a wrapper around Connection::accessToken() that returns whether it's not empty. Now, Connection::accessToken() and Connection::logout() are changed in such a way that if there's a logout job ongoing Connection::accessToken() will return an empty value even though the access token is still stored in ConnectionData. This gives a hint to the rest of Connection and to the client code that the user is not quite authenticated anymore. Finally, syncLoop() and sync() have been altered to check isLoggedIn() before proceeding with their network request.
2020-06-12Connection::syncLoop: give a pause between syncsKitsune Ral
As it's observed now, Synapse responds almost immediately on /sync requests - even if there are no events to return. This downgrades long-polling to simply polling, and since clients don't expect it, polling loops become pretty violent. To alleviate that somehow, syncLoop now accepts the second parameter, msecBetween (500 msecs by default), to configure waiting between the previous sync response and the next sync request. This is only for syncLoop(); Connection::sync() fires instantly, as before.
2020-06-12BaseJob: fail early if the job needs token and there's noneKitsune Ral
2020-06-12Connection: add (STORED false) to derived Q_PROPERTYsKitsune Ral
2020-06-11BaseJob::prepareError(): be more tolerant to empty error payloadsKitsune Ral
TooManyRequests can come without a payload, apparently.
2020-06-10syncdata.h: fix an old warning about operator<<Kitsune Ral
The warning has been that it is declared as a friend but not exactly in namespace Quotient (though all compilers still could find and link it but only as long as it is defined in the namespace). Now instead of being declared as a friend it's just declared in the namespace :)
2020-06-10Room: fix messageSent() being emitted too earlyKitsune Ral
Closes #406.
2020-06-10More comments refreshKitsune Ral
[ci skip]
2020-06-09Comments refreshKitsune Ral
[skip ci]
2020-06-09Merge pull request #405 from quotient-im/kitsune-basejob-store-json-responseKitsune Ral
Store JSON response in BaseJob + tweaks to the generated code
2020-06-07Small updates to match the new generated definitionsKitsune Ral
2020-06-07Update generated files according to gtad/* changesKitsune Ral
2020-06-07SsoSession: let Private be a class everywhereKitsune Ral
Fixes a compilation warning that Private is a struct in one place and a class in another.
2020-06-07AccountSettins: use perfect forwardingKitsune Ral
2020-06-07util.cpp: drop OptimizeOnFirstUsage option on newer QtKitsune Ral
Qt 5.12+ always optimise QRegularExpression on first usage.
2020-06-07BaseJob: jsonData() and prepareResult/Error()Kitsune Ral
* JSON response is stored internally in BaseJob, rather than passed around virtual response handlers. This allow to lazily deserialise parts of the JSON response when the client calls for them instead of deserialising upon arrival and storing POD pieces. This is incompatible with the current generated code, so temporarily FTBFS. * BaseJob::loadFromJson() and BaseJob::takeFromJson() have been added to facilitate picking parts of the result as described above in derived job classes. * BaseJob::jsonData(), BaseJob::jsonItems() and (protected) BaseJob::reply() for direct access to the response in its various forms. * To further eliminate boilerplate code in generated job classes, a group of *ExpectedKeys() methods has been added - this allows to reflect the API definition of required response keys in a more "declarative" way, delegating validation to BaseJob. * parseReply() and parseJson() pair turns to singular prepareResult(). Thanks to all the changes above, in most cases it will not need overriding, unlike before. * BaseJob::Private::parseJson() is introduced, to wrap QJsonDocument::parseJson() into something less verbose. This serves a completely different purpose to the former BaseJob::parseJson(). * BaseJob::doCheckReply() takes the place, and the name, of checkReply().
2020-06-07MediaThumbnailJob: be specific about the transformKitsune Ral
What's needed for a thumbnail is normally "scale", not "crop" (as these are defined in The Spec).
2020-06-07BaseJob: expose statusCode as Q_PROPERTYKitsune Ral
2020-06-05Avoid Qt 5.15 deprecation warningKitsune Ral
operator+() is no more wanted with iterators on associative containers.
2020-06-05Use CBOR for binary JSON caching on Qt 5.15+Kitsune Ral
Qt 5.15 deprecates binary JSON format in favour of CBOR now used as a backend for its JSON classes.
2020-06-05Connection::run(): Q_INVOKABLE and chainingKitsune Ral
2020-06-01GTAD parts: new home and format updates for GTAD 0.7Kitsune Ral
All GTAD-related files (gtad.yaml and templates) from now live in their dedicated gtad/ directory - this helps against removing them accidentally along with the rest of the generated files. The format to list generated files in gtad.yaml has changed a bit before GTAD 0.7 beta2; gtad.yaml in this commit conforms to the new structure.
2020-06-01Remove the piece of code introduced too early onKitsune Ral
parseJsonDocument() will come later.
2020-05-31BaseJob: use non-deprecated API for Qt 5.15Kitsune Ral
Qt 5.15 renamed HTTP2AllowedAttribute to Http2AllowedAttribute, deprecating the old spelling.
2020-05-31BaseJob::rawData: overload for (even) quicker accessKitsune Ral
No functional changes either.
2020-05-31Move around and format codeKitsune Ral
No functional changes here.
2020-05-31room.cpp: clean away unused variablesKitsune Ral
2020-05-12basejob.cpp: nitpicks from clang-formatKitsune Ral
2020-04-17Regenerate API files using new GTAD and refreshed templatesKitsune Ral
No functional changes.
2020-04-17gtad.yaml, *.mustache: upgrade to GTAD 0.7 betaKitsune Ral
That means much more readable templates thanks to GTAD 0.7 in turn using the upgrade Mustache engine.
2020-04-15Connection: track resolving and login flows jobs; isUsable()Kitsune Ral
This is to prevent the jobs from several resolveServer() / setHomeserver() invocations running in parallel.
2020-04-15Connection: cleanup and reformatKitsune Ral
2020-04-15Connection: connectToServer -> loginWithPasswordKitsune Ral
connectToServer() is left for compatibility but deprecated.
2020-04-14BaseJob::makeRequestUrl(): even more tolerance to slash separatorsKitsune Ral
The code is really defensive now, making sure there's exactly one slash between the base path and the endpoint. It's still very conservative about the path composition otherwise (no normalisation etc.).
2020-04-14Settings: use UTF-8 encodingKitsune Ral
Fixes #403.
2020-04-14Room: emit updatedEvent() on un-reactionKitsune Ral
2020-04-12Room::safeMemberName()Kitsune Ral
Pulled from Quaternion code.
2020-04-12Room::canSwitchVersions(): refactor and make Q_INVOKABLEKitsune Ral
2020-04-08EventStatus::ReplacedKitsune Ral
This can be handy to pass the replaced status to QML.
2020-04-07BaseJob: don't finish and re-try at the same timeKitsune Ral
Due to a missing return statement, a retry with auth case led to the job being finished and pending at the same time, with no good consequences.
2020-04-07Room::addNewMessageEvents: fix an assertion failure on empty senderKitsune Ral
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.
2020-04-06BaseJob: disable pipeliningKitsune Ral
Longer running on RHEL/CentOS 8 leads to crashes that no more occur with disabled pipelining.
2020-04-06Revert changes accidentally sneaked in with the previous commitKitsune Ral
2020-04-06CMakeLists: install header files to a subdirectoryKitsune Ral
This is a Quotient part of #328 fix; QtOlm part is pending.
2020-04-05RequestData: create empty QByteArray by defaultKitsune Ral
May fix #380. Also: remove explicit copying disablers, the unique_ptr<> member disables copying just fine.