aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-09-11Further tweaks to MxcReplyAlexey Rusakov
- QNetworkReply::isSequential() already returns `true`, there's no need to overload it again. - Use `Q_SLOTS` instead of `slots` because it's an external library interface and clients may use other libraries using `slots` identifier; - Use `emit` instead of `Q_EMIT` because this is a part of internal implementation and if we ever use a library that has an `emit` identifier, a massive search-replace will be in order anyway. - Use `QMetaObject::invokeMethod()` with a queued connection as a clearer way to achieve the same goal as `QTimer::singleShot(0, ...)`.
2021-09-11Don't parent NAM to QCoreApplicationAlexey Rusakov
QThreadStorage accepts ownership over stored objects.
2021-09-10Move URL creation to Room/Connection; use query instead of fragmentAlexey Rusakov
The query is easier to manipulate; and the original mxc URL is not used for the real network request anyway.
2021-09-10Add "quotient.network" logging categoryAlexey Rusakov
2021-09-10Percent-encode all the thingsTobias Fella
2021-09-10Return a failed MxcReply on invalid requestsTobias Fella
2021-09-10Update lib/networkaccessmanager.cppTobias Fella
Co-authored-by: Alexey Rusakov <Kitsune-Ral@users.sf.net>
2021-09-10Update lib/networkaccessmanager.cppTobias Fella
Co-authored-by: Alexey Rusakov <Kitsune-Ral@users.sf.net>
2021-09-09Straighten up file transfer cancellationAlexey Rusakov
There was a mess with fileTransferCancelled(); it was only emitted when a download (but not an upload) was cancelled; besides, in case of downloads a file transfer info structure was getting deleted whereas uploads left a file transfer in Cancelled status. This all now converges on: - fileTransferFailed() for both failures and cancellations (to simplify slot connection, and also to follow the practice in, e.g., Qt Network). - the file transfer info structure is kept around in Cancelled status, following the logic used for failures. There's no particular cleanup which may become a problem if one uploads and cancels many times (download file transfers are keyed to event ids, mitigating the problem); this will be fixed in another commit. Closes #503. Closes #504.
2021-09-07Fix showing non-animated ImagesTobias Fella
2021-09-05Create a NAM for each threadTobias Fella
2021-09-05Implement the mxc protocol in the NetworkAccessManagerTobias Fella
Allows images to be loaded using the NetworkAccessManager instead of an ImageProvider
2021-09-03Merge pull request #500 from quotient-im/kitsune/bump-minimal-versionsAlexey Rusakov
Require CMake 3.16, kindly ask for C++20; drop qmake
2021-09-03Tacitly allow CMake 3.13 to keep LGTM workingAlexey Rusakov
Also: drop olm from the LGTM build environment, it's of no use there for now.
2021-09-03CONTRIBUTING.md: update code conventions to C++20Alexey Rusakov
2021-09-03CI experiment: requires GCC 10 and Clang 11Alexey Rusakov
2021-09-03Require CMake 3.16; drop qmake; use C++20 and newer compilersAlexey Rusakov
Also, refresh the documentation a bit.
2021-09-02Merge pull request #495 from quotient-im/kitsune-ci-windows-codeqlAlexey Rusakov
CI: add Windows, CodeQL
2021-09-01Drop .appveyor.ymlAlexey Rusakov
2021-09-01CMakeLists: allow to pass clang-format options in CLANG_FORMATAlexey Rusakov
This supersedes passing clang-format options in a separate CLANG_FORMAT_ARGS CMake variable.
2021-09-01CMakeLists: fix resolving gtad on WindowsAlexey Rusakov
2021-09-01Change GTAD/matrix-doc pathsAlexey Rusakov
`${{ runner.workspace }}` is, unfortunately, not portable to Windows.
2021-09-01Add update-api on Windows pipelineAlexey Rusakov
2021-09-01Fix bin path differences between POSIX and WindowsAlexey Rusakov
2021-09-01Fix building with MSVCAlexey Rusakov
Turned out it was broken, and I was looking the other way.
2021-09-01Add Windows, CodeQLAlexey Rusakov
Windows and CodeQL snippets picked from Quaternion
2021-09-01Merge pull request #498 from TobiasFella/versioninfoAlexey Rusakov
Add functions and macros to query for Quotient's version
2021-08-31Add functions and macros to query for Quotient's versionTobias Fella
2021-08-30Room: displayNameForHtmlAlexey Rusakov
This is useful for cases when the room display name is returned to QML that doesn't have an equivalent of QString::toHtmlEscaped().
2021-08-30SettingsGroup, AccountSettings: simplify constructorsAlexey Rusakov
The parameter packs intended to pass organisation/application names to QSettings never worked that way since Quotient::Settings didn't have that parameter pack in its constructor. On the other hand, setting organisation/application name using static methods before constructing the first settings object has been working just fine so far. If someone needs to create a settings object with customised org/app name for some reason (sneaking settings from other apps?), those can be brought back in a working manner and without breaking API/ABI even.
2021-08-26Merge pull request #497 from TobiasFella/accountregistryAlexey Rusakov
Add AccountRegistry
2021-08-26Add AccountRegistryTobias Fella
Basic session management class; Created from Quaternion's AccountRegistry and NeoChat's AccountListModel. The connections can be accessed by the user's id, this technically limits it to one connection for each matrix account.
2021-08-23Room: isMember(); memberState() only needs user idAlexey Rusakov
Room::memberJoinState() was only used to check if the user has joined the room (it couldn't be used for anything else), meaning that its best replacement is actually not memberState() but isMember() introduced hereby. It's also better to pass user ids instead of User objects to memberState() and isMember() since that is enough to check membership. # Conflicts: # lib/room.cpp # lib/room.h
2021-08-23Merge branch 'kitsune/deprecations'Alexey Rusakov
2021-08-22User::isGuest(): fix a clazy warningAlexey Rusakov
2021-08-22Fix building with MSVCAlexey Rusakov
2021-08-22RoomEvent: drop timestamp()Alexey Rusakov
Use originTimestamp(); the corresponding Q_PROPERTY was not renamed (in error) so it is now.
2021-08-22Settings: no more setToken() and accessToken(); deprecate clearAccessToken()Alexey Rusakov
Access tokens should be stored with Qt Keychain that's about to come; and these methods were deprecated since before 0.5.
2021-08-22Use Q_DECL_DEPRECATED_X instead of \deprecated doc-commentAlexey Rusakov
This still works with older moc yet produces actual warnings when compiling C++ code.
2021-08-22Drop other stuff deprecated pre- or early 0.6Alexey Rusakov
BaseJob: StatusCode::JsonParseError Connection: resolved() and reconnected() signals; roomMap(); postReceipt() User: bridged() and rawName() ConnectionData: setHost() and setPort() StateEventBase: prev_content()
2021-08-22Drop QMatrixClient namespace aliasAlexey Rusakov
2021-08-22Deprecate BaseJob::DataAlexey Rusakov
The grand plan is to get rid of `BaseJob` and turn job invocations to function calls returning `QFuture`. `RequestData` will stay though, feeding data into those calls.
2021-08-22Regenerate API filesAlexey Rusakov
2021-08-22Mustache: avoid BaseJob::DataAlexey Rusakov
It's about to be deprecated in the next commits.
2021-08-21CleanupAlexey Rusakov
2021-08-21Merge branch 'kitsune/event-status-namespace'Alexey Rusakov
2021-08-10Turn EventStatus from a class to a namespaceAlexey Rusakov
This wrapper only exists for an enum inside of it and dates back to times when Qt meta-object system did not support free-standing enums.
2021-08-10Room::Private::sync/historyEdge()Alexey Rusakov
Move Room::sync/historyEdge() implementation to Room::Private, so that internal logic could use the same readable shortcuts without q-> prefixes, instead of timeline.crend() and timeline.cend() that are much less readable.
2021-08-09Merge pull request #492 from quotient-im/kitsune-qurl-in-csapiAlexey Rusakov
Use QUrl in CS API backend
2021-08-07Update non-generated code to work with QUrls in CS APIAlexey Rusakov