aboutsummaryrefslogtreecommitdiff
path: root/lib/room.h
diff options
context:
space:
mode:
authorKitsune Ral <Kitsune-Ral@users.sf.net>2019-07-06 20:13:38 +0900
committerKitsune Ral <Kitsune-Ral@users.sf.net>2019-07-06 20:13:38 +0900
commit025e5ab7d90ce8cf474567457301de32d5a3e34a (patch)
treea56ab34bff688275a9deabd920539bebc247cc8e /lib/room.h
parentcbb4f219d5c79f81706019c0679222d5ccee4a4c (diff)
downloadlibquotient-025e5ab7d90ce8cf474567457301de32d5a3e34a.tar.gz
libquotient-025e5ab7d90ce8cf474567457301de32d5a3e34a.zip
Be stricter on usage of stateKey
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.
Diffstat (limited to 'lib/room.h')
-rw-r--r--lib/room.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/lib/room.h b/lib/room.h
index 7c85e4ed..3abf262d 100644
--- a/lib/room.h
+++ b/lib/room.h
@@ -440,6 +440,9 @@ namespace QMatrixClient
const QJsonObject& eventContent);
QString retryMessage(const QString& txnId);
void discardMessage(const QString& txnId);
+
+ /// Send a request to update the room state with the given event
+ SetRoomStateWithKeyJob* setState(const StateEventBase& evt) const;
void setName(const QString& newName);
void setCanonicalAlias(const QString& newAlias);
/// Set room aliases on the user's current server
@@ -453,6 +456,7 @@ namespace QMatrixClient
void inviteToRoom(const QString& memberId);
LeaveRoomJob* leaveRoom();
+ /// \deprecated - use setState() instead")
SetRoomStateWithKeyJob* setMemberState(
const QString& memberId, const RoomMemberEvent& event) const;
void kickMember(const QString& memberId, const QString& reason = {});