109 lines
3.6 KiB
QML
109 lines
3.6 KiB
QML
import QtQuick 2.13
|
|
import QtQuick.Controls 2.13
|
|
import QtQuick.Layouts 1.13
|
|
import QtGraphicalEffects 1.13
|
|
import "../../../../imports"
|
|
import "../../../../shared"
|
|
import "../../../../shared/status"
|
|
import "../../Profile/Sections/Contacts"
|
|
|
|
ModalPopup {
|
|
id: popup
|
|
|
|
|
|
title: qsTr("Contact requests")
|
|
|
|
ListView {
|
|
id: contactList
|
|
|
|
property Component profilePopupComponent: ProfilePopup {
|
|
id: profilePopup
|
|
onClosed: destroy()
|
|
}
|
|
|
|
anchors.fill: parent
|
|
anchors.leftMargin: -Style.current.halfPadding
|
|
anchors.rightMargin: -Style.current.halfPadding
|
|
|
|
model: profileModel.contacts.contactRequests
|
|
clip: true
|
|
|
|
delegate: ContactRequest {
|
|
name: Utils.removeStatusEns(model.name)
|
|
address: model.address
|
|
localNickname: model.localNickname
|
|
identicon: model.thumbnailImage || model.identicon
|
|
profileClick: function (showFooter, userName, fromAuthor, identicon, textParam, nickName) {
|
|
var popup = profilePopupComponent.createObject(contactList);
|
|
popup.openPopup(showFooter, userName, fromAuthor, identicon, textParam, nickName);
|
|
}
|
|
onBlockContactActionTriggered: {
|
|
blockContactConfirmationDialog.contactName = name
|
|
blockContactConfirmationDialog.contactAddress = address
|
|
blockContactConfirmationDialog.open()
|
|
}
|
|
}
|
|
}
|
|
|
|
footer: Item {
|
|
width: parent.width
|
|
height: children[0].height
|
|
|
|
BlockContactConfirmationDialog {
|
|
id: blockContactConfirmationDialog
|
|
onBlockButtonClicked: {
|
|
profileModel.contacts.blockContact(blockContactConfirmationDialog.contactAddress)
|
|
blockContactConfirmationDialog.close()
|
|
}
|
|
}
|
|
|
|
ConfirmationDialog {
|
|
id: declineAllDialog
|
|
title: qsTr("Decline all contacts")
|
|
confirmationText: qsTr("Are you sure you want to decline all these contact requests")
|
|
onConfirmButtonClicked: {
|
|
const pubkeys = []
|
|
for (let i = 0; i < contactList.count; i++) {
|
|
pubkeys.push(contactList.itemAtIndex(i).address)
|
|
}
|
|
profileModel.contacts.rejectContactRequests(JSON.stringify(pubkeys))
|
|
declineAllDialog.close()
|
|
}
|
|
}
|
|
|
|
ConfirmationDialog {
|
|
id: acceptAllDialog
|
|
title: qsTr("Accept all contacts")
|
|
confirmationText: qsTr("Are you sure you want to accept all these contact requests")
|
|
onConfirmButtonClicked: {
|
|
const pubkeys = []
|
|
for (let i = 0; i < contactList.count; i++) {
|
|
pubkeys.push(contactList.itemAtIndex(i).address)
|
|
}
|
|
profileModel.contacts.acceptContactRequests(JSON.stringify(pubkeys))
|
|
acceptAllDialog.close()
|
|
}
|
|
}
|
|
|
|
StatusButton {
|
|
id: blockBtn
|
|
enabled: contactList.count > 0
|
|
anchors.right: addToContactsButton.left
|
|
anchors.rightMargin: Style.current.padding
|
|
anchors.bottom: parent.bottom
|
|
type: "warn"
|
|
text: qsTr("Decline all")
|
|
onClicked: declineAllDialog.open()
|
|
}
|
|
|
|
StatusButton {
|
|
id: addToContactsButton
|
|
enabled: contactList.count > 0
|
|
anchors.right: parent.right
|
|
text: qsTr("Accept all")
|
|
anchors.bottom: parent.bottom
|
|
onClicked: acceptAllDialog.open()
|
|
}
|
|
}
|
|
}
|