Age | Commit message (Collapse) | Author |
|
RoomAliasesEvent is no more even registered (meaning that the library
will load m.room.aliases as unknown state events); quotest code updated
to use historyEdge() instead of timelineEdge().
|
|
|
|
Namely memberCount(), localAliases(), remoteAliases(), timelineEdge().
|
|
|
|
|
|
This turns the design changes laid out in #464 comments to code, as of
0.6.x branch (0.7 API will be introduced separately):
- 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).
|
|
The minor component is now updated in .cpp, not in .h.
|
|
While slightly more complex for updating, this allows COW to kick in in
the read accessor; using QSet instead of QList also provides better
consistency guarantees. For QML both are converted to an Array-like
collection since Qt 5.15; Qt 5.12 turns QSet<> in a QVariantList,
according to the documentation, which is quite reasonable too.
|
|
It triggers a bug in libformat that prevents
AllowShortFunctionsOnASingleLine to do its job:
https://bugs.llvm.org/show_bug.cgi?id=47936
|
|
|
|
Also: introduce a merge(T1&, const Omittable<T2>&) that does pretty much
the same as Omittable<T1>::merge(const Omittable<T2>&) except it works
on non-omittables as the left/first operand.
The change removes the need for a clumsy -2 fallback in unreadCount,
and makes the logic loading those counters cleaner along the way.
|
|
|
|
|
|
Without this, it compiles on Linux but on macOS and Windows.
|
|
|
|
A previous incarnation, make_array, existed in basejob.cpp before.
The new direction taken by C++20 is to either deduce the array (but
the used Apple standard library doesn't have deduction guides yet) or
to use to_array() that converts a C array to std::array. This latter
option is taken here, with to_array() defined in quotient_common.h
until we move over to C++20.
|
|
|
|
Instead of being defined independently, JoinState now uses values from
the Membership enumeration (former MemberEventContent::MembershipType)
that was moved to quotient_common.h for that purpose. Both enumerations
gained a Q_FLAG_NS decoration and operator<< overrides that strip
"Quotient::" prefix when dumping member/join state values to the log -
obviating toCString(JoinState) along the way. Quotient::MembershipType
alias is deprecated from now.
|
|
Ok, it was stupid to delete #include <QtCore/QMetaType> in 004ebf8d and
then to expect that Qt macros would still work, given that I don't use
QObject. In my defense I can only say that with Qt 6 it still compiled.
|
|
Q_DECLARE_METATYPE is really unhappy about types without
a public default constructor.
|
|
TypedBase is an abstract class; constructing it doesn't make sense. But
even if it were not abstract, it's not supposed to be instantiated.
|
|
9a5fa623 dropped one of RoomMessageEvent constructors for Qt 6 in order
to address #483 - breaking the build with Qt 6 along the way, as
Room::postFile() relied on that constructor. This commit changes
Room::postFile() in turn, deprecating the current signature and adding
a new one that accepts an EventContent object rather than a path to
a file. In order to achieve that, FileInfo and ImageInfo classes have
gained new constructors that accept QFileInfo instead of the legacy
series of parameters, streamlining usage of EventContent structures.
|
|
quotient_common.h has Q_NAMESPACE but no own compilation unit, and moc
was not called on it either - using metaobject data on an enumeration
defined in that file leads to a linking error due to sharedMetaObject
not being defined. The fix makes so that the file is detected by automoc
with the respective definition being generated.
Cherry-picked from a83ec900 (0.6.x branch).
|
|
Closes #481.
|
|
|
|
As pointed out by one of users, thumbnail requests produce quite a bit
of logging traffic, so it's better to manage them separately.
|
|
|
|
Closes #483.
|
|
(cherry picked from commit 7b65051e959968fe538f40c975d85757cfcc7df7)
(cherry picked from commit 9edfefe9b209583d18ce92e7ffd73e8aa1f3ef1e)
|
|
It was a tiny wrapper around QUrlQuery to facilitate creation from
an initializer list - however, Mustache templates long changed to
not actually used that additional constructor.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
An SPDX comment in the source code did not collapse entirely.
|
|
|
|
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.
# Conflicts:
# CMakeLists.txt
|
|
Qt 6 support
|
|
It's not there, it's experimental - people should know what they are
doing.
|
|
E2EE will be remade anyway so building it now makes little sense.
|
|
The latter obsoleted the former since Qt 5.9, actually.
|
|
|
|
|
|
Previously Q_NAMESPACE did not require its own moc, somehow blending
into others; now it does.
|
|
QChar now accepts more types for construction, and that unraveled
concatenation of a Type/SecondaryType character with a QString.
To fix it, give the compiler a hint by casting to the enum's underlying
type (which also nicely documents that we _actually_ switch from enum
to character type).
|
|
Now that QMetaType introspects into types, it reveals hidden problems
(which is very nice of it).
|
|
|
|
Waiting for the Multimedia arrival in Qt 6.2.
|