aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-07-24Room::setLastDisplayedEventId: Update local read receipt immediatelyAlexey Rusakov
There is no harm in updating it locally, as read receipts are only supposed to move forwards; if an update from another client of the same user arrives the next millisecond, it will only be incorporated if it points to an even newer event (exactly as would be expected). In any case, read receipts are more for others than for yourself.
2021-07-24Fix unread counter left intact after loading backscrollAlexey Rusakov
Another regression after the read receipts/markers rework, most prominently seen when a room has "0+" unread messages and the first historical batch gets loaded.
2021-07-24Room::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-07-20Merge branch 'kitsune-read-receipts-markers-part2' into 0.6.xAlexey Rusakov
2021-07-20Promote read receipts/marker in addNewMessageEvents()Alexey Rusakov
Read marker promotion worked before the rework - and it works again with this commit. Read receipts are promoted from anywhere, the fully read marker is only promoted if it's adjacent to the batch just added.
2021-07-19addHistoricalMessageEvents(): restore force-recount logicAlexey Rusakov
Pre-e12d7ba2, addHistoricalMessageEvents() triggered recounting and emitting unreadMessagesChanged() even if the number remained the same. This logic has been lost when refactoring the code; now it's back there again.
2021-07-19Fix m.read getting stuck behind m.fully_readAlexey Rusakov
2021-07-16Merge branch 'kitsune-fix-read-receipts-and-markers-0.6' into 0.6.xAlexey Rusakov
2021-07-14User::rename(): actually build on the current stateAlexey Rusakov
This is a further extension of #481 fix that takes the whole current state event content, rather than just the avatar URL.
2021-07-14SyncData::parseJson(): further minor optimisationAlexey Rusakov
Just to align with the similar changes coming in 0.7
2021-07-14SyncData::parseJson(): fix incorrect reserve() argAlexey Rusakov
That is unlikely to impact performance, since reserve() is usually called only once per given JSON object (`{ "join": { ... } }`).
2021-07-14CMakeLists: fixed potential linking errors around quotient_common.hAlexey Rusakov
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.
2021-07-11Fix Room::processAccountDataEvent() return valueAlexey Rusakov
(cherry picked from commit 7b65051e959968fe538f40c975d85757cfcc7df7)
2021-07-10Merge branch '0.6.x' into kitsune-fix-read-receipts-and-markers-0.6Alexey Rusakov
2021-07-10Update and extend doc-comments for read marker-related methodsAlexey Rusakov
2021-07-10Fix Room::processAccountDataEvent() return valueAlexey Rusakov
2021-07-10Room: refactoring around logging (esp. profile logs)Alexey Rusakov
2021-07-10Room: fix the read markers/receipts confusionAlexey Rusakov
This turns the design changes laid out in #464 comments to code: - 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, though the current code doesn't use that).
2021-07-02Room::memberJoinState(): return Leave if user == nullptrAlexey Rusakov
2021-06-29More re-generated API files (only doc-comments updated)Alexey Rusakov
All actual updates to the API go to 0.7.
2021-06-29.appveyor.yml: And another typo fixAlexey Rusakov
2021-06-28.appveyor.yml: typo fixAlexey Rusakov
2021-06-28.appveyor.yml: use an existing Qt 5.9 configAlexey Rusakov
2021-06-28.appveyor.yml: drop old E2EE code from testingAlexey Rusakov
2021-06-28gtad.yaml: update for use with GTAD pre-0.8Alexey Rusakov
2021-06-27Room::processEphemeralEvents(): refactoringAlexey Rusakov
2021-06-27Retain the current room member avatar when renamingAlexey Rusakov
Closes #481. Note: the library doesn't even have the API in User to set per-room avatars; one still can achieve that by calling Room::setState<RoomMemberEvent>(...) though (and it's likely to be _the_ recommended way to deal with per-room user profiles in 0.7, with User being entirely deprecated).
2021-06-23Re-generated API files according to the previous commitAlexey Rusakov
Only API-preserving changes are included in this branch (0.7 will have all changes).
2021-06-23Update to the new matrix-doc layout and toolingAlexey Rusakov
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.
2021-06-070.6.7Alexey Rusakov
2021-06-07Connection::joinRoom() shouldn't enforce room stateAlexey Rusakov
This is an adjustment to the earlier fix of #471: if a join is immediately followed by a leave (e.g. from another client/bot - you can't do it programmatically from libQuotient) the sync may bring the room already in the Leave state; therefore `joinRoom` should not impose the state but rather ask `provideRoom` to create a `Join` room - just as it's designed when passed an empty `joinState`.
2021-05-20Add libquotient.kdev4 to .gitignoreTobias Fella
2021-05-08CI: Use GCC 9 where GCC 8 wasAlexey Rusakov
GitHub images no more have GCC 8. (cherry picked from commit f89ece678c47a54a28c91c2d0ced65ba3e9a6540)
2021-05-08Fix joinedRoom signal not being emitted in some casesAlexey Rusakov
An alternative implementation of #463 (and thanks to Carl for spotting the original problem).
2021-03-170.6.6Alexey Rusakov
2021-03-04Tighten up against malformed user ids in eventsAlexey Rusakov
A few months ago 3c85f049 introduced validation of user ids but the rest of the library code wasn't updated to the fact that Connection::user() may quite legitimately (if not routinely) return nullptr, leading to crashes particularaly when malformed ids come from the wire. This commit adds necessary checks before using the value returned from user(). Closes #456.
2021-02-210.6.5Alexey Rusakov
2021-02-21Update documentationAlexey Rusakov
Replace references to Spectral with NeoChat as a more lively and better supported client; deprecate qmake; remove a mention that libQuotient uses LGPL-2.1-only because it's not true, according to ./COPYING
2021-02-21SECURITY.md: 0.5.x is no more supportedAlexey Rusakov
It's been 2 years, time to move on.
2021-02-21Update a comment that still mentions RiotAlexey Rusakov
2021-02-21Uri: support abbreviated types in Matrix URIsAlexey Rusakov
As per the latest iteration of MSC2312, room/, user/ and event/ are only supported for parsing and replication but not for emitting from Matrix identifiers.
2021-01-28Fix rich edits (transmit)Roland Pallai
The new formatted_body was not included into new content on edit due to badly constructed json. (cherry picked from commit df6b2d31ec8f2f5890826719e960f450a4968f22)
2021-01-28Fix rich replies json format (transmit)Roland Pallai
With this patch it looks like: "m.relates_to": { "m.in_reply_to": { "event_id": "$another:event.com" } } instead of: "m.relates_to": { "event_id": "$another:event.com", "rel_type": "m.in_reply_to" }, So it fits the specification by now. https://matrix.org/docs/spec/client_server/r0.6.1#rich-replies (cherry picked from commit b850edadde2299b122a5cd17da85e943430e43b7)
2021-01-25Connection: stop login flows job before resolvingAlexey Rusakov
This avoids a corner case when a login flows job finishes (or worse, goes for a retry) while the homeserver is (being) resolved, yielding the Connection object in an inconsistent state to the client.
2021-01-15CMakeLists.txt: 0.6.4Kitsune Ral
2021-01-15CONTRIBUTING.md: drop one last mention of Travis CIKitsune Ral
2021-01-12Don't run the test if TEST_USER is emptyKitsune Ral
2021-01-11LGTM: fine-tune the set of analysed filesKitsune Ral
2021-01-08Add a timeout to quotest runsKitsune Ral
The current Quotest gets stuck somewhere, and the its big internal 3-minute watchdog doesn't cut it for some reason. While investigating that, an external timeout would be quite handy.
2021-01-08quotest: use the target room for loadMembers testKitsune Ral
Now that we've crowded it with a few synthetic users, lazy-loading of members doesn't some other room to get tested. Bonus: Connection::roomByAlias() has its own very simple test now.