status-desktop/ui/app/AppLayouts/Communities/popups/CommunityMemberMessagesPopu...

149 lines
5.6 KiB
QML

import QtQuick 2.14
import QtQuick.Controls 2.14
import QtQuick.Layouts 1.14
import QtQml.Models 2.14
import QtGraphicalEffects 1.14
import StatusQ.Core 0.1
import StatusQ.Core.Theme 0.1
import StatusQ.Controls 0.1
import StatusQ.Popups 0.1
import StatusQ.Popups.Dialog 0.1
import utils 1.0
import shared.views.chat 1.0
import shared.stores 1.0 as SharedStores
import AppLayouts.Chat.stores 1.0 as ChatStores
StatusDialog {
id: root
property SharedStores.RootStore sharedRootStore
property ChatStores.RootStore rootStore
property var chatCommunitySectionModule
property var memberMessagesModel: chatCommunitySectionModule.memberMessagesModel
property string memberPubKey: ""
property string displayName: ""
width: 800
title: qsTr("%1 messages").arg(root.displayName)
subtitle: qsTr("%n message(s)", "", root.memberMessagesModel.count)
ColumnLayout {
anchors.fill: parent
id: column
StatusBaseText {
visible: communityMemberMessageListView.count === 0
text: qsTr("No messages")
Layout.alignment: Qt.AlignCenter
verticalAlignment: Text.AlignVCenter
color: Style.current.secondaryText
Layout.topMargin: 40
Layout.bottomMargin: 40
}
StatusListView {
id: communityMemberMessageListView
model: root.memberMessagesModel
Layout.fillWidth: true
Layout.fillHeight: count
implicitHeight: contentHeight
delegate: Item {
id: messageDelegate
width: ListView.view.width
height: messageItem.height
MessageView {
id: messageItem
width: parent.width
sharedRootStore: root.sharedRootStore
rootStore: root.store
chatCommunitySectionModule: root.chatCommunitySectionModule
messageStore: root.memberMessagesModel
messageId: model.id
chatId: model.chatId
responseToMessageWithId: model.responseToMessageWithId
amIChatAdmin: true
senderId: model.senderId
senderDisplayName: model.senderDisplayName
senderOptionalName: model.senderOptionalName
senderIsEnsVerified: model.senderEnsVerified
senderIsAdded: model.senderIsAdded
senderIcon: model.senderIcon
senderColorHash: model.senderColorHash
senderTrustStatus: model.senderTrustStatus
amISender: model.amISender
messageText: model.messageText
messageImage: model.messageImage
messageTimestamp: model.timestamp
messageOutgoingStatus: model.outgoingStatus
messageContentType: model.contentType
pinnedMessage: model.pinned
messagePinnedBy: model.pinnedBy
sticker: model.sticker
stickerPack: model.stickerPack
linkPreviewModel: model.linkPreviewModel
links: model.links
transactionParams: model.transactionParameters
quotedMessageText: model.quotedMessageParsedText
quotedMessageFrom: model.quotedMessageFrom
quotedMessageContentType: model.quotedMessageContentType
quotedMessageDeleted: model.quotedMessageDeleted
quotedMessageAuthorDetailsName: model.quotedMessageAuthorName
quotedMessageAuthorDetailsDisplayName: model.quotedMessageAuthorDisplayName
quotedMessageAuthorDetailsThumbnailImage: model.quotedMessageAuthorThumbnailImage
quotedMessageAuthorDetailsEnsVerified: model.quotedMessageAuthorEnsVerified
quotedMessageAuthorDetailsIsContact: model.quotedMessageAuthorIsContact
quotedMessageAuthorDetailsColorHash: model.quotedMessageAuthorColorHash
bridgeName: model.bridgeName
isViewMemberMessagesePopup: true
shouldRepeatHeader: true
}
MouseArea {
id: mouseArea
acceptedButtons: Qt.LeftButton
cursorShape: Qt.PointingHandCursor
anchors.fill: parent
onClicked: {
root.chatCommunitySectionModule.openCommunityChatAndScrollToMessage(model.chatId, model.id)
Global.switchToCommunityChannelsView(root.chatCommunitySectionModule.getMySectionId())
root.chatCommunitySectionModule.openCommunityChatAndScrollToMessage(model.chatId, model.id)
root.closed()
}
}
}
}
}
footer: StatusDialogFooter {
id: footer
rightButtons: ObjectModel {
StatusFlatButton {
text: qsTr("Delete all messages by %1").arg(root.displayName)
enabled: communityMemberMessageListView.count > 0
type: StatusBaseButton.Type.Danger
onClicked: {
root.chatCommunitySectionModule.deleteCommunityMemberMessages(root.memberPubKey, "", "")
}
borderColor: "transparent"
}
StatusButton {
text: qsTr("Done")
onClicked: root.close()
}
}
}
}