Age | Commit message (Collapse) | Author |
|
|
|
|
|
Closes #253.
|
|
GetMembersByRoomJob was dysfunctional so far, creating "unknown
RoomMemberEvents" instead of proper ones. Now that we need it for lazy-
loading, it's fixed!
|
|
|
|
...instead of the entire function body wrapped in an if block.
|
|
Assigning a lambda to a static variable causes it to fail with
'auto must always deduce to the same type' error.
|
|
This concludes beta-version of lazy-loading support in libQMatrixClient (#253).
|
|
Commit fd52459 introduced a regression rendering the cache unusable
after a client restart (an empty state overwrites whatever state was in
the cache). This commit contains the fix, along with more room change
tracking.
# Conflicts:
# lib/room.h
|
|
Commit fd52459 introduced a regression rendering the cache unusable
after a client restart (an empty state overwrites whatever state was in
the cache). This commit contains the fix, along with more room change
tracking.
|
|
|
|
The members of the summary can be omitted in the payload; this change fixes calculation
of the roomname from hero names passed in room summary. Also: RoomSummary can be dumped to QDebug now.
|
|
|
|
|
|
|
|
This should cover the Connection-related part of #253.
Connection gained lazyLoading/setLazyLoading accessors and the respective Q_PROPERTY.
When lazy loading is on, sync() adds lazy_load_members: true to its filter.
|
|
|
|
|
|
Both now use through a common JsonConverter<> template class with its
base definition tuned for structs/QJsonObjects and specialisations for
non-object types. This new implementation doesn't work with virtual
fillJson functions yet (so EventContent classes still use toJson as a
member function) and does not cope quite well with non-constructible
objects (you have to specialise JsonConverter<> rather than, more
intuitively, JsonObjectConverter<>), but overall is more streamlined
compared to the previous implementation. It also fixes one important
issue that pushed for a rewrite: the previous implementation was not
working with structure hierarchies at all so (in particular) the Filter
part of CS API was totally disfunctional.
|
|
some compilers
A member function reference is not the same as a member function pointer.
|
|
|
|
== true
That is, instead of Q_ASSERTing in debug builds (release builds already work that way). The idea is that since the value is default-initialised anyway it can be used as a "blank canvas" to access specific fields inside the value's structure. The next commit will use that.
|
|
Keeping them protected extends API surface with no reasonable use from it (and for now derived classes don't access StateEvent<> data members directly, anyway).
|
|
Don't make JSON for event content only to parse it again; drop extraneous constructs.
|
|
|
|
|
|
It was accidentally (and incorrectly) used in tags sorting code;
will be dropped from Omittable<> in a later commit.
|
|
|
|
|
|
|
|
|
|
placeholder
Otherwise placeholder objects are confused with normal room JSON objects
when loading from the cache. Closes #257 (again).
|
|
|
|
You can't assign a QStringBuilder to auto.
|
|
Closes #257.
|
|
This allows to batch updates into signals being emitted only once per
sync. Also supercedes emitNamesChanged flag used in a few places.
|
|
|
|
|
|
|
|
SyncData now resides in its own pair of files and is capable to load either from file or from JSON. There is also (yet untested) capability to load rooms from files if a file name stands is the value for a given room id. This allows to store the master cache file separately from cache files for each room, massively easing the problem of bulky accounts that can overflow the poor capacity of Qt's JSON engine.
|
|
These two are intermingled in Room::addHistoricalMessageEvents because
processing empty events found in a historical batch is no different from
discovering (not lazy-loaded) members.
|
|
This was one more cause of #257 - the case when a redaction on a state
event arrives in the same batch as the redacted event.
|
|
|
|
|
|
A new recommended (and localisable) way of getting a piece of raw
response to display next to error messages as "details".
BaseJob::rawData() returns exactly the trimmed piece of data, no
"truncated" suffix there anymore.
|
|
|
|
Closes #258.
|
|
Brings event id of the state event that was in effect before this one arrived. This key is not specced but it's used in the wild since forever.
|
|
|
|
Also: use Matrix type instead of internal type id in StateEventKey
(Because internal type id maps to the library type system which will not
discern between Unknown events and therefore will mix together events of
different types in Room::Private::baseState/currentState. The Room code
is updated accordingly (bonus: more asserts there).)
Closes #255.
|