aboutsummaryrefslogtreecommitdiff
path: root/lib/room.h
AgeCommit message (Collapse)Author
2020-11-08Room: drop setMemberState()Kitsune Ral
2020-11-08More robust member profile data retrievalKitsune Ral
MemberEventContent: displayname and avatarUrl are now Omittables; CS API doesn't guarantee their presence (see also https://github.com/matrix-org/matrix-doc/issues/1375) but Quotient used to assume they are always there, causing #412. RoomMemberEvent: displayname() -> newDisplayName() and avatarUrl() -> newAvatarUrl(), to emphasise the actual semantics (and also the changed interface). The old signatures still work but are deprecated. Instead of roomMembername() (with weird camel-casing), three new methods in addition to safeMemberName() are introduced to Room: - memberName() - produces the "best known" display name for a given member; User::name() uses it to avoid the pitfall of #412. - disambiguatedMemberName() - this is what roomMembername() used to be; not recommended for direct use when UI is concerned. - safeMemberName() - remains as is, with the fix to the documentation that used to mislead that the function returns HTML-escaped content (it didn't, and doesn't). - htmlSafeMemberName() - does what safeMemberName() claimed to do. Respectively, memberNames() is deprecated in favor of safeMemberNames() and htmlSafeMemberNames(). The corresponding Q_PROPERTY uses safeMemberNames() now. Similar to memberName(), Room has got memberAvatarUrl() to spare User class from diving into Room state to find the member avatar URL. Closes #412.
2020-10-27Added filter param to getPreviousContent so that a server side filterJohn
can be applied.
2020-08-04User: optimise names/avatars storing and updatingKitsune Ral
The current mechanism relied on a complicated and fragile machinery around setNameForRoom() and setAvatarForRoom() that maintained the "most used" entity for a given user along with "other" ones. Given that per-room avatars are pretty rare in Matrix, it's also been inefficient as kitsune-benchmark-set_ForRoom branch shows. The new mechanism stores the "default" (as per user profile) name and avatar and maintains a singleton map of avatar objects across all users. Per-user profile only (normally) exists for the local user so there's yet another inefficiency that will be fixed further down the road by introducing a separate user profile class.
2020-04-12Room::safeMemberName()Kitsune Ral
Pulled from Quaternion code.
2020-04-12Room::canSwitchVersions(): refactor and make Q_INVOKABLEKitsune Ral
2020-03-26Refactoring around Connection::onSyncSuccess()Kitsune Ral
The method grew large and a bit unwieldy over the years.
2020-03-23Expose aliases() and altAliases() as propertiesBlack Hat
2020-03-21Merge pull request #383 from ram-nad/msc2432-fixKitsune Ral
fixing msc2432
2020-03-20added altAliases()Ram Nad
2020-03-20made suggested changesRam Nad
2020-02-25E2EE: implement megolm inbound session decrypt for roomAlexey Andreyev
Signed-off-by: Alexey Andreev <aa13q@ya.ru>
2020-02-25E2EE: add connection session decrypt, handle to-device and ↵Alexey Andreyev
device_one_time_keys_count Signed-off-by: Alexey Andreev <aa13q@ya.ru>
2019-12-11Pass action scope to Room::setTagsKitsune Ral
The tags can now be applied not only to the current room but also propagated to its predecessors and successors.
2019-12-09Room::creation() and Room::tombstone()Kitsune Ral
2019-12-09Room::predecessor() and Room::successor()Kitsune Ral
2019-12-09Room: more doc-commentsKitsune Ral
2019-12-08Remove extraneous qualificationKitsune Ral
2019-10-20Qualify types in signals and Q_INVOKABLEsKitsune Ral
Because https://doc.qt.io/qt-5/moc.html#limitations . For direct connections that doesn't matter but it very much does for queued ones. Along with this DirectChatsMap and IgnoredUsersList have been moved from Connection:: to Quotient::.
2019-10-01Room::getCurrentState()Kitsune Ral
2019-09-29Fix formatting weirdnessKitsune Ral
Alas, clang-format is not terrifically good around [[attributes]]
2019-09-24Room: cleanupKitsune Ral
2019-08-18Room::decryptMessage: now with the header file changesKitsune Ral
2019-08-13Support for server notices rooms (MSC1452)Kitsune Ral
Closes #326.
2019-08-09Namespace: QMatrixClient -> Quotient (with back comp alias)Kitsune Ral
2019-08-02Apply the new brace wrapping to source filesKitsune Ral
2019-08-02Merge branch 'master' into use-clang-formatKitsune Ral
2019-08-01Merge branch 'master' into kitsune-relationsKitsune Ral
Unified *Key -> *KeyL identifiers in roommessageevent.cpp along the way.
2019-07-31Room::postReaction()Kitsune Ral
2019-07-31Support for receiving m.reaction eventsKitsune Ral
* struct EventRelation; class ReactionEvent; Room::relatedEvents() * Reaction events are processed in both history and sync batches * Redacting a reaction removes it from the list of related events * QMCTest::sendReaction()
2019-07-27E2EE: introduce EncryptedEventAlexey Andreyev
2019-07-09Merge branch 'master' into use-clang-formatKitsune Ral
2019-07-08Room: Set roomId and sender on pending eventsKitsune Ral
Also: refactoring to streamline state events submission.
2019-07-06Be stricter on usage of stateKeyKitsune Ral
A few places in the library dealt with state events without any notion of state_key inside events, including StateEvent[Base] and relevant functions in Room. A number of workarounds have been made; e.g., Room::setMemberState() accepted userId as a separate parameter, ignoring the state key inside the RoomMemberEvent already passed to it, and Room::setLocalAliases() had a bug in the initial version where the function still tried to pass aliases in an event with an empty state key. This commit fixes this shortcoming: StateEventBase now gets stateKey as one more parameter, Room::Private::getCurrentState() respects stateKey and returns properly constructed stub events, and Room::setMemberState() gives way to a more generic Room::setState() that works uniformly with whatever state event you pass to it.
2019-07-03Room/Connection: make room aliases work properlyKitsune Ral
Closes #301.
2019-06-24Merge branch 'master' into clang-formatKitsune Ral
# Conflicts: # CMakeLists.txt # lib/avatar.cpp # lib/connection.cpp # lib/connection.h # lib/connectiondata.cpp # lib/csapi/account-data.cpp # lib/csapi/account-data.h # lib/csapi/capabilities.cpp # lib/csapi/capabilities.h # lib/csapi/content-repo.cpp # lib/csapi/create_room.cpp # lib/csapi/filter.cpp # lib/csapi/joining.cpp # lib/csapi/keys.cpp # lib/csapi/list_joined_rooms.cpp # lib/csapi/notifications.cpp # lib/csapi/openid.cpp # lib/csapi/presence.cpp # lib/csapi/pushrules.cpp # lib/csapi/registration.cpp # lib/csapi/room_upgrades.cpp # lib/csapi/room_upgrades.h # lib/csapi/search.cpp # lib/csapi/users.cpp # lib/csapi/versions.cpp # lib/csapi/whoami.cpp # lib/csapi/{{base}}.cpp.mustache # lib/events/accountdataevents.h # lib/events/eventcontent.h # lib/events/roommemberevent.cpp # lib/events/stateevent.cpp # lib/jobs/basejob.cpp # lib/jobs/basejob.h # lib/networkaccessmanager.cpp # lib/networksettings.cpp # lib/room.cpp # lib/room.h # lib/settings.cpp # lib/settings.h # lib/syncdata.cpp # lib/user.cpp # lib/user.h # lib/util.cpp
2019-06-02lib/room.*: Spelling fixes in commentsKitsune Ral
[ci skip]
2019-05-04Room::allHistoryLoadedKitsune Ral
2019-04-03room.h: more doc-commentsKitsune Ral
2019-03-31Room::refreshDisplayName() - for debugging purposes onlyKitsune Ral
Clients should not need to call this method explicitly.
2019-03-21Room::displayName: fix NOTIFY signal for Q_PROPERTYKitsune Ral
2019-03-13Room: make notificationCount, highlightCount Q_PROPERTYsKitsune Ral
Closes #299. Due to restrictions for the NOTIFY signal notificationCountChanged and highlightCountChanged no more carry Room* as a parameter, breaking back-compatibility.
2019-03-12Make Room::prettyPrint Q_INVOKABLEKitsune Ral
So that it can be called from QML code
2019-03-02style: apply .clang-format to all .cpp and .h filesMarc Deop
2019-02-26Room::avatarObjectKitsune Ral
Closes #268.
2019-02-25Room::postHtmlMessage: default message type to m.textKitsune Ral
postHtmlText becomes just a synonym for 2-arg postHtmlMessage (hopefully at least this doesn't confuse QML that is generally terrible at resolving overloads).
2019-02-22Room::setAliases, Connection: roomByAlias, updateRoomAliasesKitsune Ral
2019-02-17Room: add isUnstable(); unstableVersion() -> stabilityUpdated()Kitsune Ral
2019-02-17Room: emit room, not id in upgraded(); add upgradeFailed()Kitsune Ral
2019-02-16Room::canSwitchVersions()Kitsune Ral