aboutsummaryrefslogtreecommitdiff
path: root/lib
AgeCommit message (Collapse)Author
2018-12-12csapi/rooms.h: regenerate to update doc-commentsKitsune Ral
2018-12-12Room: more doc-commentsKitsune Ral
2018-12-12Room::allMembersLoaded(); more doc-commentsKitsune Ral
2018-12-11Merge branch 'master' into kitsune-lazy-loadingKitsune Ral
2018-12-11Make Room::setDisplayed() trigger loading all membersKitsune Ral
Closes #253.
2018-12-11RoomMemberEvent: properly integrate with GetMembersByRoomJobKitsune Ral
GetMembersByRoomJob was dysfunctional so far, creating "unknown RoomMemberEvents" instead of proper ones. Now that we need it for lazy- loading, it's fixed!
2018-12-11Expose Connection::nextBatchToken()Kitsune Ral
2018-12-10Room::getPreviousContent: use early returnKitsune Ral
...instead of the entire function body wrapped in an if block.
2018-12-10Suppress a function_traits<> test with lambdas on MSVC2015Kitsune Ral
Assigning a lambda to a static variable causes it to fail with 'auto must always deduce to the same type' error.
2018-12-09Room: defer memberListChanged(); track room summary changesKitsune Ral
This concludes beta-version of lazy-loading support in libQMatrixClient (#253).
2018-12-09Room: track more changes; fix cache smashing upon restartKitsune Ral
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
2018-12-09Room: track more changes; fix cache smashing upon restartKitsune Ral
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.
2018-12-09fromJson, fillFromJson: avoid overwriting pods if the JSON value is undefinedKitsune Ral
2018-12-09MSC 688: MSC-compliant RoomSummary; update Room::calculateDisplayname()Kitsune Ral
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.
2018-12-08Omittable<>::merge<>Kitsune Ral
2018-12-08Room summariesKitsune Ral
2018-12-08Connection: support members lazy-loadingKitsune Ral
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.
2018-12-08SyncJob: accept Filter instead of QString for the filterKitsune Ral
2018-12-08EventContent: minor cleanupKitsune Ral
2018-12-08Refactor toJson/fillJsonKitsune Ral
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.
2018-12-08function_traits: more tests, fix function objects/lambdas not working with ↵Kitsune Ral
some compilers A member function reference is not the same as a member function pointer.
2018-12-08Omittable: better editability; drop implicit cast to boolKitsune Ral
2018-12-08Omittable: make operator-> and operator* return an empty object if omitted ↵Kitsune Ral
== 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.
2018-12-08StateEvent<>: make data members privateKitsune Ral
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).
2018-12-08RoomMemberEvent: cleanupKitsune Ral
Don't make JSON for event content only to parse it again; drop extraneous constructs.
2018-12-08Special-case FALLTHROUGH for ClangKitsune Ral
2018-12-08function_traits<>: support any arity; add compile-time testsKitsune Ral
2018-12-08Connection: Avoid Omittable<>::operator boolKitsune Ral
It was accidentally (and incorrectly) used in tags sorting code; will be dropped from Omittable<> in a later commit.
2018-11-23Update CS APIKitsune Ral
2018-11-23Room::setLastReadEvent: save room state when updating own read markerKitsune Ral
2018-11-23Room: track more ChangesKitsune Ral
2018-11-23Room/Connection: don't save the just loaded room cacheKitsune Ral
2018-11-23Connection::saveState: use null instead of an empty object for a roomKitsune Ral
placeholder Otherwise placeholder objects are confused with normal room JSON objects when loading from the cache. Closes #257 (again).
2018-11-22Connection: Log when a room state cache is writtenKitsune Ral
2018-11-22Fix QString initialisation from QStringBuilderKitsune Ral
You can't assign a QStringBuilder to auto.
2018-11-22Save state cache per-roomKitsune Ral
Closes #257.
2018-11-22Room: Change enum, Changes flag set, and changed() signalKitsune Ral
This allows to batch updates into signals being emitted only once per sync. Also supercedes emitNamesChanged flag used in a few places.
2018-11-22Generalise and expose cacheLocation()Kitsune Ral
2018-11-20SyncJob::parseJson: fix a validation mistakeKitsune Ral
2018-11-20eventloader.h: drop unneeded #includeKitsune Ral
2018-11-20Make SyncData more self-contained and prepare for cache splittingKitsune Ral
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.
2018-11-19Don't cache empty events; prepare for lazy-loadingKitsune Ral
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.
2018-11-19Room: process new state events after applying redactionsKitsune Ral
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.
2018-11-19Room: expose eventsHistoryJob as a Q_PROPERTYKitsune Ral
2018-11-19Room: profile addHistoricalMessageEvents (+cleanup)Kitsune Ral
2018-11-19BaseJob::rawDataSample()Kitsune Ral
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.
2018-11-17Room: cleanupKitsune Ral
2018-11-17Room::processStateEvent: process banning correctlyKitsune Ral
Closes #258.
2018-11-17StateEventBase::replacedState()Kitsune Ral
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.
2018-11-17User::isIgnored()Kitsune Ral