aboutsummaryrefslogtreecommitdiff
path: root/lib
AgeCommit message (Collapse)Author
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-09JoinState: use unsigned int as the underlying typeKitsune Ral
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
2018-11-14Room: fix incorrect handling of state event redactionsKitsune Ral
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.
2018-11-14DEFINE_SIMPLE_STATE_EVENT: Add default constructorKitsune Ral
...that creates an "empty" event, i.e. an event with content initialised by a default constructor (not all content types support this but those for simple events do).
2018-11-14Room: historyEdge(), syncEdge, Private::timelineBase()Kitsune Ral
Also: make moveEventsToTimeline() always put historical events from position -1 rather than 0 so that Private::baseState could always correspond to the before-0 position.
2018-11-14Improvements in commentsKitsune Ral
- registerEventType(): comment the cryptic _ variable - Room::postEvent: document the return value - Room::Private: upgrade comments to doc-comments - even though in Private, they still are helpful to show hints in IDEs. - General cleanup
2018-11-14Room: ensure proper error signalling on event sending failuresKitsune Ral
2018-11-05isEchoEvent: check the pending event for ids, not the synced oneKitsune Ral
Synced events always have their event ids, so checking those for event id renders most of the function useless (and returns an incorrect result). Closes #248.
2018-11-04profilerMinNsecs(): Fix a misnomer - it's PROFILER_LOG_USECS now - and ↵Kitsune Ral
document it
2018-11-04Profiler logging fixes and improvementsKitsune Ral
2018-11-04Room: store state events in a unified wayKitsune Ral
Closes #194.
2018-11-04StateEventKey and std::hash<StateEventKey> to arrange state events in hashmapsKitsune Ral
2018-11-04StateEvent::dumpTo: add state_key to the loglineKitsune Ral