Move the ActionsHandler instance to the RoomPage

This is required since when using a RoomWindow, the ActionsHandler from the RoomManager is used, which means that the wrong room is used.
This commit is contained in:
Tobias Fella
2021-04-16 16:52:39 +02:00
parent f98eb78185
commit 89056ed6c1
6 changed files with 16 additions and 13 deletions

View File

@@ -337,13 +337,13 @@ ToolBar {
checkForFancyEffectsReason();
if (ChatBoxHelper.hasAttachment) {
// send attachment but don't reset the text
roomManager.actionsHandler.postMessage("", ChatBoxHelper.attachmentPath,
actionsHandler.postMessage("", ChatBoxHelper.attachmentPath,
ChatBoxHelper.replyEventId, ChatBoxHelper.editEventId, {});
currentRoom.markAllMessagesAsRead();
messageSent();
return;
}
roomManager.actionsHandler.postMessage(inputField.text.trim(), ChatBoxHelper.attachmentPath,
actionsHandler.postMessage(inputField.text.trim(), ChatBoxHelper.attachmentPath,
ChatBoxHelper.replyEventId, ChatBoxHelper.editEventId, userAutocompleted);
currentRoom.markAllMessagesAsRead();
inputField.clear();

View File

@@ -36,7 +36,7 @@ Kirigami.OverlaySheet {
text: i18nc("@action:button", "Ok")
onClicked: {
roomManager.actionsHandler.createRoom(roomNameField.text, roomTopicField.text);
Controller.createRoom(roomNameField.text, roomTopicField.text);
root.close();
root.destroy();
}

View File

@@ -44,7 +44,7 @@ Kirigami.ScrollablePage {
onClicked: {
if (!identifierField.isJoined) {
roomManager.actionsHandler.joinRoom(identifierField.text);
Controller.joinRoom(identifierField.text);
// When joining the room, the room will be opened
}
applicationWindow().pageStack.layers.pop();
@@ -97,7 +97,7 @@ Kirigami.ScrollablePage {
width: publicRoomsListView.width
onClicked: {
if (!isJoined) {
roomManager.actionsHandler.joinRoom(roomID)
Controller.joinRoom(roomID)
justJoined = true;
} else {
roomManager.enterRoom(connection.room(roomID))

View File

@@ -30,6 +30,14 @@ Kirigami.ScrollablePage {
onCurrentRoomChanged: ChatBoxHelper.clearEditReply()
ActionsHandler {
id: actionsHandler
room: page.currentRoom
connection: Controller.activeConnection
}
Connections {
target: Controller.activeConnection
function onJoinedRoom(room) {
@@ -40,7 +48,7 @@ Kirigami.ScrollablePage {
}
Connections {
target: roomManager.actionsHandler
target: actionsHandler
onShowMessage: {
page.header.contentItem.text = message;
page.header.contentItem.type = messageType === ActionsHandler.Error ? Kirigami.MessageType.Error : Kirigami.MessageType.Information;

View File

@@ -57,11 +57,6 @@ Kirigami.ApplicationWindow {
QtObject {
id: roomManager
property var actionsHandler: ActionsHandler {
room: roomManager.currentRoom
connection: Controller.activeConnection
}
property var currentRoom: null
property alias pageStack: root.pageStack
property var roomList: null

View File

@@ -73,10 +73,10 @@ public:
Q_ENUM(PasswordStatus);
/// \brief Create new room for a group chat.
void createRoom(const QString &name, const QString &topic);
Q_INVOKABLE void createRoom(const QString &name, const QString &topic);
/// \brief Join a room.
void joinRoom(const QString &alias);
Q_INVOKABLE void joinRoom(const QString &alias);
private:
explicit Controller(QObject *parent = nullptr);