From 4e40f5c7d947d77e142ef806bc64e3474c8ddf63 Mon Sep 17 00:00:00 2001 From: James Graham Date: Mon, 29 May 2023 13:43:24 +0000 Subject: [PATCH] getUser UserDetailDialog Use `NeoChatRoom::getUser` to provide the user properties in `UserDetailDialog` --- .../Component/Timeline/TimelineContainer.qml | 7 +-- src/qml/Component/TimelineView.qml | 2 +- src/qml/Dialog/UserDetailDialog.qml | 47 +++++++++---------- src/qml/Panel/DirectChatDrawerHeader.qml | 2 +- src/qml/Panel/RoomDrawer.qml | 2 +- 5 files changed, 27 insertions(+), 33 deletions(-) diff --git a/src/qml/Component/Timeline/TimelineContainer.qml b/src/qml/Component/Timeline/TimelineContainer.qml index 56870a6ac..fdc4ed567 100644 --- a/src/qml/Component/Timeline/TimelineContainer.qml +++ b/src/qml/Component/Timeline/TimelineContainer.qml @@ -390,8 +390,7 @@ ColumnLayout { onClicked: { userDetailDialog.createObject(QQC2.ApplicationWindow.overlay, { room: currentRoom, - user: root.author.object, - displayName: root.author.displayName + user: root.author }).open(); } cursorShape: Qt.PointingHandCursor @@ -474,9 +473,7 @@ ColumnLayout { onClicked: { userDetailDialog.createObject(QQC2.ApplicationWindow.overlay, { room: currentRoom, - user: root.author.object, - displayName: root.author.displayName, - avatarSource: root.author.avatarSource + user: root.author }).open(); } } diff --git a/src/qml/Component/TimelineView.qml b/src/qml/Component/TimelineView.qml index c3cd2c43b..418e74a68 100644 --- a/src/qml/Component/TimelineView.qml +++ b/src/qml/Component/TimelineView.qml @@ -398,7 +398,7 @@ QQC2.ScrollView { function showUserDetail(user) { userDetailDialog.createObject(QQC2.ApplicationWindow.overlay, { room: root.currentRoom, - user: user, + user: root.currentRoom.getUser(user.id), }).open(); } diff --git a/src/qml/Dialog/UserDetailDialog.qml b/src/qml/Dialog/UserDetailDialog.qml index ba87aeafd..5d7796313 100644 --- a/src/qml/Dialog/UserDetailDialog.qml +++ b/src/qml/Dialog/UserDetailDialog.qml @@ -18,9 +18,6 @@ Kirigami.OverlaySheet { property var room property var user - property string displayName: user.displayName - readonly property url avatar: room.avatarForMember(user) - parent: applicationWindow().overlay leftPadding: Kirigami.Units.smallSpacing @@ -44,9 +41,9 @@ Kirigami.OverlaySheet { Layout.preferredWidth: Kirigami.Units.iconSizes.huge Layout.preferredHeight: Kirigami.Units.iconSizes.huge - name: displayName - source: avatar - color: user.color + name: root.user.displayName + source: root.user.avatarSource + color: root.user.color } ColumnLayout { @@ -59,12 +56,12 @@ Kirigami.OverlaySheet { elide: Text.ElideRight wrapMode: Text.NoWrap - text: room.htmlSafeMemberName(user.id) + text: user.displayName } Kirigami.SelectableLabel { textFormat: TextEdit.PlainText - text: user.id + text: root.user.id } } } @@ -74,50 +71,50 @@ Kirigami.OverlaySheet { } Kirigami.BasicListItem { - visible: user !== room.localUser + visible: !root.user.isLocalUser action: Kirigami.Action { - text: room.connection.isIgnored(user) ? i18n("Unignore this user") : i18n("Ignore this user") + text: room.connection.isIgnored(root.user.object) ? i18n("Unignore this user") : i18n("Ignore this user") icon.name: "im-invisible-user" onTriggered: { root.close() - room.connection.isIgnored(user) ? room.connection.removeFromIgnoredUsers(user) : room.connection.addToIgnoredUsers(user) + room.connection.isIgnored(root.user.object) ? room.connection.removeFromIgnoredUsers(root.user.object) : room.connection.addToIgnoredUsers(root.user.object) } } } Kirigami.BasicListItem { - visible: user !== room.localUser && room.canSendState("kick") && room.containsUser(user.id) + visible: !root.user.isLocalUser && room.canSendState("kick") && room.containsUser(root.user.id) action: Kirigami.Action { text: i18n("Kick this user") icon.name: "im-kick-user" onTriggered: { - room.kickMember(user.id) + room.kickMember(root.user.id) root.close() } } } Kirigami.BasicListItem { - visible: user !== room.localUser && room.canSendState("invite") && !room.containsUser(user.id) + visible: !root.user.isLocalUser && room.canSendState("invite") && !room.containsUser(root.user.id) action: Kirigami.Action { - enabled: !room.isUserBanned(user.id) + enabled: !room.isUserBanned(root.user.id) text: i18n("Invite this user") icon.name: "list-add-user" onTriggered: { - room.inviteToRoom(user.id) + room.inviteToRoom(root.user.id) root.close() } } } Kirigami.BasicListItem { - visible: user !== room.localUser && room.canSendState("ban") && !room.isUserBanned(user.id) + visible: !root.user.isLocalUser && room.canSendState("ban") && !room.isUserBanned(root.user.id) action: Kirigami.Action { text: i18n("Ban this user") icon.name: "im-ban-user" icon.color: Kirigami.Theme.negativeTextColor onTriggered: { - applicationWindow().pageStack.pushDialogLayer("qrc:/BanSheet.qml", {room: room, userId: user.id}, { + applicationWindow().pageStack.pushDialogLayer("qrc:/BanSheet.qml", {room: root.room, userId: root.user.id}, { title: i18nc("@title", "Ban User"), width: Kirigami.Units.gridUnit * 25 }) @@ -126,14 +123,14 @@ Kirigami.OverlaySheet { } } Kirigami.BasicListItem { - visible: user !== room.localUser && room.canSendState("ban") && room.isUserBanned(user.id) + visible: !root.user.isLocalUser && room.canSendState("ban") && room.isUserBanned(root.user.id) action: Kirigami.Action { text: i18n("Unban this user") icon.name: "im-irc" icon.color: Kirigami.Theme.negativeTextColor onTriggered: { - room.unban(user.id) + room.unban(root.user.id) root.close() } } @@ -162,14 +159,14 @@ Kirigami.OverlaySheet { } } Kirigami.BasicListItem { - visible: user === room.localUser || room.canSendState("redact") + visible: root.user.isLocalUser || room.canSendState("redact") action: Kirigami.Action { text: i18n("Remove recent messages by this user") icon.name: "delete" icon.color: Kirigami.Theme.negativeTextColor onTriggered: { - applicationWindow().pageStack.pushDialogLayer("qrc:/RemoveSheet.qml", {room: root.room, userId: user.id}, { + applicationWindow().pageStack.pushDialogLayer("qrc:/RemoveSheet.qml", {room: root.room, userId: root.user.id}, { title: i18nc("@title", "Remove Messages"), width: Kirigami.Units.gridUnit * 25 }) @@ -178,12 +175,12 @@ Kirigami.OverlaySheet { } } Kirigami.BasicListItem { - visible: user !== room.localUser + visible: !root.user.isLocalUser action: Kirigami.Action { text: i18n("Open a private chat") icon.name: "document-send" onTriggered: { - Controller.openOrCreateDirectChat(user); + Controller.openOrCreateDirectChat(root.user.object); root.close() } } @@ -193,7 +190,7 @@ Kirigami.OverlaySheet { text: i18n("Copy link") icon.name: "username-copy" onTriggered: { - Clipboard.saveText("https://matrix.to/#/" + user.id) + Clipboard.saveText("https://matrix.to/#/" + root.user.id) } } } diff --git a/src/qml/Panel/DirectChatDrawerHeader.qml b/src/qml/Panel/DirectChatDrawerHeader.qml index e97e61a9f..5b49204c3 100644 --- a/src/qml/Panel/DirectChatDrawerHeader.qml +++ b/src/qml/Panel/DirectChatDrawerHeader.qml @@ -46,7 +46,7 @@ ColumnLayout { onTriggered: { const popup = userDetailDialog.createObject(QQC2.ApplicationWindow.overlay, { room: room, - user: room.directChatRemoteUser, + user: room.getUser(room.directChatRemoteUser.id), }) popup.closed.connect(function() { userListItem.highlighted = false diff --git a/src/qml/Panel/RoomDrawer.qml b/src/qml/Panel/RoomDrawer.qml index 9fa97a24a..4ac842b90 100644 --- a/src/qml/Panel/RoomDrawer.qml +++ b/src/qml/Panel/RoomDrawer.qml @@ -243,7 +243,7 @@ Kirigami.OverlayDrawer { onClicked: { const popup = userDetailDialog.createObject(QQC2.ApplicationWindow.overlay, { room: room, - user: user, displayName: name, + user: room.getUser(user.id) }) popup.closed.connect(function() { userListItem.highlighted = false