getUser UserDetailDialog

Use `NeoChatRoom::getUser` to provide the user properties in `UserDetailDialog`
This commit is contained in:
James Graham
2023-05-29 13:43:24 +00:00
parent 3b5bb06b4a
commit 4e40f5c7d9
5 changed files with 27 additions and 33 deletions

View File

@@ -390,8 +390,7 @@ ColumnLayout {
onClicked: { onClicked: {
userDetailDialog.createObject(QQC2.ApplicationWindow.overlay, { userDetailDialog.createObject(QQC2.ApplicationWindow.overlay, {
room: currentRoom, room: currentRoom,
user: root.author.object, user: root.author
displayName: root.author.displayName
}).open(); }).open();
} }
cursorShape: Qt.PointingHandCursor cursorShape: Qt.PointingHandCursor
@@ -474,9 +473,7 @@ ColumnLayout {
onClicked: { onClicked: {
userDetailDialog.createObject(QQC2.ApplicationWindow.overlay, { userDetailDialog.createObject(QQC2.ApplicationWindow.overlay, {
room: currentRoom, room: currentRoom,
user: root.author.object, user: root.author
displayName: root.author.displayName,
avatarSource: root.author.avatarSource
}).open(); }).open();
} }
} }

View File

@@ -398,7 +398,7 @@ QQC2.ScrollView {
function showUserDetail(user) { function showUserDetail(user) {
userDetailDialog.createObject(QQC2.ApplicationWindow.overlay, { userDetailDialog.createObject(QQC2.ApplicationWindow.overlay, {
room: root.currentRoom, room: root.currentRoom,
user: user, user: root.currentRoom.getUser(user.id),
}).open(); }).open();
} }

View File

@@ -18,9 +18,6 @@ Kirigami.OverlaySheet {
property var room property var room
property var user property var user
property string displayName: user.displayName
readonly property url avatar: room.avatarForMember(user)
parent: applicationWindow().overlay parent: applicationWindow().overlay
leftPadding: Kirigami.Units.smallSpacing leftPadding: Kirigami.Units.smallSpacing
@@ -44,9 +41,9 @@ Kirigami.OverlaySheet {
Layout.preferredWidth: Kirigami.Units.iconSizes.huge Layout.preferredWidth: Kirigami.Units.iconSizes.huge
Layout.preferredHeight: Kirigami.Units.iconSizes.huge Layout.preferredHeight: Kirigami.Units.iconSizes.huge
name: displayName name: root.user.displayName
source: avatar source: root.user.avatarSource
color: user.color color: root.user.color
} }
ColumnLayout { ColumnLayout {
@@ -59,12 +56,12 @@ Kirigami.OverlaySheet {
elide: Text.ElideRight elide: Text.ElideRight
wrapMode: Text.NoWrap wrapMode: Text.NoWrap
text: room.htmlSafeMemberName(user.id) text: user.displayName
} }
Kirigami.SelectableLabel { Kirigami.SelectableLabel {
textFormat: TextEdit.PlainText textFormat: TextEdit.PlainText
text: user.id text: root.user.id
} }
} }
} }
@@ -74,50 +71,50 @@ Kirigami.OverlaySheet {
} }
Kirigami.BasicListItem { Kirigami.BasicListItem {
visible: user !== room.localUser visible: !root.user.isLocalUser
action: Kirigami.Action { 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" icon.name: "im-invisible-user"
onTriggered: { onTriggered: {
root.close() 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 { 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 { action: Kirigami.Action {
text: i18n("Kick this user") text: i18n("Kick this user")
icon.name: "im-kick-user" icon.name: "im-kick-user"
onTriggered: { onTriggered: {
room.kickMember(user.id) room.kickMember(root.user.id)
root.close() root.close()
} }
} }
} }
Kirigami.BasicListItem { 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 { action: Kirigami.Action {
enabled: !room.isUserBanned(user.id) enabled: !room.isUserBanned(root.user.id)
text: i18n("Invite this user") text: i18n("Invite this user")
icon.name: "list-add-user" icon.name: "list-add-user"
onTriggered: { onTriggered: {
room.inviteToRoom(user.id) room.inviteToRoom(root.user.id)
root.close() root.close()
} }
} }
} }
Kirigami.BasicListItem { 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 { action: Kirigami.Action {
text: i18n("Ban this user") text: i18n("Ban this user")
icon.name: "im-ban-user" icon.name: "im-ban-user"
icon.color: Kirigami.Theme.negativeTextColor icon.color: Kirigami.Theme.negativeTextColor
onTriggered: { 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"), title: i18nc("@title", "Ban User"),
width: Kirigami.Units.gridUnit * 25 width: Kirigami.Units.gridUnit * 25
}) })
@@ -126,14 +123,14 @@ Kirigami.OverlaySheet {
} }
} }
Kirigami.BasicListItem { 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 { action: Kirigami.Action {
text: i18n("Unban this user") text: i18n("Unban this user")
icon.name: "im-irc" icon.name: "im-irc"
icon.color: Kirigami.Theme.negativeTextColor icon.color: Kirigami.Theme.negativeTextColor
onTriggered: { onTriggered: {
room.unban(user.id) room.unban(root.user.id)
root.close() root.close()
} }
} }
@@ -162,14 +159,14 @@ Kirigami.OverlaySheet {
} }
} }
Kirigami.BasicListItem { Kirigami.BasicListItem {
visible: user === room.localUser || room.canSendState("redact") visible: root.user.isLocalUser || room.canSendState("redact")
action: Kirigami.Action { action: Kirigami.Action {
text: i18n("Remove recent messages by this user") text: i18n("Remove recent messages by this user")
icon.name: "delete" icon.name: "delete"
icon.color: Kirigami.Theme.negativeTextColor icon.color: Kirigami.Theme.negativeTextColor
onTriggered: { 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"), title: i18nc("@title", "Remove Messages"),
width: Kirigami.Units.gridUnit * 25 width: Kirigami.Units.gridUnit * 25
}) })
@@ -178,12 +175,12 @@ Kirigami.OverlaySheet {
} }
} }
Kirigami.BasicListItem { Kirigami.BasicListItem {
visible: user !== room.localUser visible: !root.user.isLocalUser
action: Kirigami.Action { action: Kirigami.Action {
text: i18n("Open a private chat") text: i18n("Open a private chat")
icon.name: "document-send" icon.name: "document-send"
onTriggered: { onTriggered: {
Controller.openOrCreateDirectChat(user); Controller.openOrCreateDirectChat(root.user.object);
root.close() root.close()
} }
} }
@@ -193,7 +190,7 @@ Kirigami.OverlaySheet {
text: i18n("Copy link") text: i18n("Copy link")
icon.name: "username-copy" icon.name: "username-copy"
onTriggered: { onTriggered: {
Clipboard.saveText("https://matrix.to/#/" + user.id) Clipboard.saveText("https://matrix.to/#/" + root.user.id)
} }
} }
} }

View File

@@ -46,7 +46,7 @@ ColumnLayout {
onTriggered: { onTriggered: {
const popup = userDetailDialog.createObject(QQC2.ApplicationWindow.overlay, { const popup = userDetailDialog.createObject(QQC2.ApplicationWindow.overlay, {
room: room, room: room,
user: room.directChatRemoteUser, user: room.getUser(room.directChatRemoteUser.id),
}) })
popup.closed.connect(function() { popup.closed.connect(function() {
userListItem.highlighted = false userListItem.highlighted = false

View File

@@ -243,7 +243,7 @@ Kirigami.OverlayDrawer {
onClicked: { onClicked: {
const popup = userDetailDialog.createObject(QQC2.ApplicationWindow.overlay, { const popup = userDetailDialog.createObject(QQC2.ApplicationWindow.overlay, {
room: room, room: room,
user: user, displayName: name, user: room.getUser(user.id)
}) })
popup.closed.connect(function() { popup.closed.connect(function() {
userListItem.highlighted = false userListItem.highlighted = false