From 8996806b05e2069a4c4845fe40936b04dd2f6284 Mon Sep 17 00:00:00 2001 From: Tobias Fella Date: Fri, 17 Feb 2023 20:58:47 +0100 Subject: [PATCH] Copy other user's matrix ID instead of room id for direct messages Implements #469 --- src/neochatroom.cpp | 4 ++++ src/neochatroom.h | 2 ++ src/qml/Menu/RoomListContextMenu.qml | 6 ++++-- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/neochatroom.cpp b/src/neochatroom.cpp index c9828e515..94e30c147 100644 --- a/src/neochatroom.cpp +++ b/src/neochatroom.cpp @@ -1829,3 +1829,7 @@ int NeoChatRoom::maxRoomVersion() const } return maxVersion; } +NeoChatUser *NeoChatRoom::directChatRemoteUser() const +{ + return dynamic_cast(connection()->directChatUsers(this)[0]); +} diff --git a/src/neochatroom.h b/src/neochatroom.h index c15cdf14c..9caf80021 100644 --- a/src/neochatroom.h +++ b/src/neochatroom.h @@ -99,6 +99,7 @@ class NeoChatRoom : public Quotient::Room * Only returns main integer room versions (i.e. no msc room versions). */ Q_PROPERTY(int maxRoomVersion READ maxRoomVersion NOTIFY maxRoomVersionChanged) + Q_PROPERTY(NeoChatUser *directChatRemoteUser READ directChatRemoteUser CONSTANT) public: enum MessageType { @@ -330,6 +331,7 @@ public: #endif int maxRoomVersion() const; + NeoChatUser *directChatRemoteUser() const; private: QSet highlights; diff --git a/src/qml/Menu/RoomListContextMenu.qml b/src/qml/Menu/RoomListContextMenu.qml index c88f1443e..c1fff2b26 100644 --- a/src/qml/Menu/RoomListContextMenu.qml +++ b/src/qml/Menu/RoomListContextMenu.qml @@ -52,9 +52,11 @@ Loader { } QQC2.MenuItem { - text: i18nc("@action:inmenu", "Copy Address to Clipboard") + text: room.isDirectChat() ? i18nc("@action:inmenu", "Copy user's Matrix ID to Clipboard") : i18nc("@action:inmenu", "Copy Address to Clipboard") icon.name: "edit-copy" - onTriggered: if (room.canonicalAlias.length === 0) { + onTriggered: if (room.isDirectChat()) { + Clipboard.saveText(room.directChatRemoteUser.id) + } else if (room.canonicalAlias.length === 0) { Clipboard.saveText(room.id) } else { Clipboard.saveText(room.canonicalAlias)