2020-06-17 19:18:31 +00:00
|
|
|
import QtQuick 2.13
|
|
|
|
import QtQuick.Controls 2.13
|
|
|
|
import QtQuick.Layouts 1.13
|
2020-09-15 20:10:43 +00:00
|
|
|
import QtGraphicalEffects 1.13
|
2021-08-30 14:01:34 +00:00
|
|
|
|
2021-09-28 15:04:06 +00:00
|
|
|
import utils 1.0
|
2021-10-27 21:27:49 +00:00
|
|
|
import shared 1.0
|
|
|
|
import shared.popups 1.0
|
2021-12-21 20:52:17 +00:00
|
|
|
import shared.stores 1.0
|
2022-06-22 12:16:21 +00:00
|
|
|
import shared.views 1.0 as SharedViews
|
2022-03-09 10:27:32 +00:00
|
|
|
import shared.controls.chat 1.0
|
2020-06-04 10:30:49 +00:00
|
|
|
|
2022-03-09 10:27:32 +00:00
|
|
|
import StatusQ.Core 0.1
|
2021-08-30 14:01:34 +00:00
|
|
|
import StatusQ.Core.Theme 0.1
|
|
|
|
import StatusQ.Components 0.1
|
|
|
|
import StatusQ.Controls 0.1
|
|
|
|
import StatusQ.Popups 0.1
|
|
|
|
|
|
|
|
StatusModal {
|
2020-06-04 10:30:49 +00:00
|
|
|
id: popup
|
2020-10-02 13:02:56 +00:00
|
|
|
|
|
|
|
property Popup parentPopup
|
|
|
|
|
2022-01-17 14:56:19 +00:00
|
|
|
property var profileStore
|
2021-12-31 12:29:51 +00:00
|
|
|
property var contactsStore
|
|
|
|
|
|
|
|
property string userPublicKey: ""
|
|
|
|
property string userDisplayName: ""
|
|
|
|
property string userName: ""
|
|
|
|
property string userNickname: ""
|
|
|
|
property string userEnsName: ""
|
|
|
|
property string userIcon: ""
|
|
|
|
|
|
|
|
property bool userIsEnsVerified: false
|
|
|
|
property bool userIsBlocked: false
|
2021-07-22 17:08:37 +00:00
|
|
|
property bool isCurrentUser: false
|
2022-01-04 12:06:05 +00:00
|
|
|
property bool isAddedContact: false
|
2020-06-17 21:43:26 +00:00
|
|
|
|
2020-12-02 09:10:22 +00:00
|
|
|
signal contactUnblocked(publicKey: string)
|
2020-10-02 14:37:51 +00:00
|
|
|
signal contactBlocked(publicKey: string)
|
|
|
|
|
2022-06-20 14:48:38 +00:00
|
|
|
function openPopup(publicKey, state = "") {
|
2021-12-31 12:29:51 +00:00
|
|
|
// All this should be improved more, but for now we leave it like this.
|
2022-06-22 12:16:21 +00:00
|
|
|
const contactDetails = Utils.getContactDetailsAsJson(publicKey);
|
2022-06-20 14:48:38 +00:00
|
|
|
userPublicKey = publicKey;
|
|
|
|
userDisplayName = contactDetails.displayName;
|
|
|
|
userName = contactDetails.alias;
|
|
|
|
userNickname = contactDetails.localNickname;
|
|
|
|
userEnsName = contactDetails.name;
|
|
|
|
userIcon = contactDetails.displayIcon;
|
|
|
|
userIsEnsVerified = contactDetails.ensVerified;
|
|
|
|
userIsBlocked = contactDetails.isBlocked;
|
|
|
|
isAddedContact = contactDetails.isContact;
|
|
|
|
isCurrentUser = popup.profileStore.pubkey === publicKey;
|
2022-06-22 12:16:21 +00:00
|
|
|
|
2022-06-20 14:48:38 +00:00
|
|
|
showFooter = !isCurrentUser;
|
|
|
|
popup.open();
|
|
|
|
|
|
|
|
if (state == "openNickname") {
|
|
|
|
nicknamePopup.open();
|
|
|
|
} else if (state == "contactRequest") {
|
|
|
|
sendContactRequestModal.open()
|
|
|
|
} else if (state == "blockUser") {
|
|
|
|
blockUser();
|
|
|
|
} else if (state == "unblockUser") {
|
|
|
|
unblockUser();
|
2022-03-15 15:55:18 +00:00
|
|
|
}
|
2020-06-17 21:43:26 +00:00
|
|
|
}
|
2020-06-09 10:05:25 +00:00
|
|
|
|
2022-06-20 14:48:38 +00:00
|
|
|
function blockUser() {
|
2022-06-22 12:16:21 +00:00
|
|
|
profileView.blockContactConfirmationDialog.contactName = userName;
|
|
|
|
profileView.blockContactConfirmationDialog.contactAddress = userPublicKey;
|
|
|
|
profileView.blockContactConfirmationDialog.open();
|
2022-06-20 14:48:38 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
function unblockUser() {
|
2022-06-22 12:16:21 +00:00
|
|
|
profileView.unblockContactConfirmationDialog.contactName = userName;
|
|
|
|
profileView.unblockContactConfirmationDialog.contactAddress = userPublicKey;
|
|
|
|
profileView.unblockContactConfirmationDialog.open();
|
2022-06-20 14:48:38 +00:00
|
|
|
}
|
|
|
|
|
2022-06-20 11:54:17 +00:00
|
|
|
header.title: userDisplayName + qsTr("'s Profile")
|
2022-03-30 07:09:39 +00:00
|
|
|
header.subTitle: userIsEnsVerified ? userName : Utils.getElidedCompressedPk(userPublicKey)
|
2021-08-30 14:01:34 +00:00
|
|
|
header.subTitleElide: Text.ElideMiddle
|
2022-06-22 12:16:21 +00:00
|
|
|
padding: 8
|
2021-08-30 14:01:34 +00:00
|
|
|
|
2022-06-20 11:54:17 +00:00
|
|
|
QtObject {
|
|
|
|
id: d
|
|
|
|
|
|
|
|
readonly property int contentSpacing: 5
|
|
|
|
readonly property int contentMargins: 16
|
|
|
|
}
|
|
|
|
|
2021-08-30 14:01:34 +00:00
|
|
|
headerActionButton: StatusFlatRoundButton {
|
|
|
|
type: StatusFlatRoundButton.Type.Secondary
|
|
|
|
width: 32
|
|
|
|
height: 32
|
|
|
|
|
|
|
|
icon.width: 20
|
|
|
|
icon.height: 20
|
|
|
|
icon.name: "qr"
|
2022-06-22 12:16:21 +00:00
|
|
|
onClicked: profileView.qrCodePopup.open()
|
2022-06-20 11:54:17 +00:00
|
|
|
}
|
2021-01-12 20:51:00 +00:00
|
|
|
|
2022-06-22 12:16:21 +00:00
|
|
|
SharedViews.ProfileView {
|
|
|
|
id: profileView
|
|
|
|
anchors.fill: parent
|
|
|
|
|
|
|
|
profileStore: popup.profileStore
|
|
|
|
contactsStore: popup.contactsStore
|
|
|
|
|
|
|
|
userPublicKey: popup.userPublicKey
|
|
|
|
userDisplayName: popup.userDisplayName
|
|
|
|
userName: popup.userName
|
|
|
|
userNickname: popup.userNickname
|
|
|
|
userEnsName: popup.userEnsName
|
|
|
|
userIcon: popup.userIcon
|
|
|
|
userIsEnsVerified: popup.userIsEnsVerified
|
|
|
|
userIsBlocked: popup.userIsBlocked
|
|
|
|
isAddedContact: popup.isAddedContact
|
|
|
|
isCurrentUser: popup.isCurrentUser
|
|
|
|
|
|
|
|
onContactUnblocked: {
|
|
|
|
popup.close()
|
|
|
|
popup.contactUnblocked(publicKey)
|
2020-12-04 13:51:25 +00:00
|
|
|
}
|
2020-06-29 15:23:28 +00:00
|
|
|
|
2022-06-22 12:16:21 +00:00
|
|
|
onContactBlocked: {
|
2022-06-20 11:54:17 +00:00
|
|
|
popup.close()
|
2022-06-22 12:16:21 +00:00
|
|
|
popup.contactBlocked(publicKey)
|
2020-06-29 15:23:28 +00:00
|
|
|
}
|
2020-09-15 20:10:43 +00:00
|
|
|
|
2022-06-22 12:16:21 +00:00
|
|
|
onContactAdded: {
|
2022-06-20 11:54:17 +00:00
|
|
|
popup.close()
|
2022-06-22 12:16:21 +00:00
|
|
|
popup.contactAdded(publicKey)
|
2020-09-15 20:10:43 +00:00
|
|
|
}
|
|
|
|
|
2022-06-22 12:16:21 +00:00
|
|
|
onContactRemoved: {
|
|
|
|
popup.close()
|
2020-09-16 16:00:21 +00:00
|
|
|
}
|
2022-06-22 12:16:21 +00:00
|
|
|
|
|
|
|
onNicknameEdited: {
|
2022-06-20 11:54:17 +00:00
|
|
|
popup.close()
|
2020-09-15 20:10:43 +00:00
|
|
|
}
|
2020-06-29 15:23:28 +00:00
|
|
|
}
|
2020-06-09 10:05:25 +00:00
|
|
|
|
2022-06-20 11:54:17 +00:00
|
|
|
// TODO: replace with StatusStackModal
|
|
|
|
SendContactRequestModal {
|
|
|
|
id: sendContactRequestModal
|
|
|
|
anchors.centerIn: parent
|
|
|
|
width: popup.width
|
|
|
|
height: popup.height
|
|
|
|
visible: false
|
|
|
|
header.title: qsTr("Send Contact Request to") + " " + userDisplayName
|
2022-06-22 12:16:21 +00:00
|
|
|
userPublicKey: popup.userPublicKey
|
|
|
|
userDisplayName: popup.userDisplayName
|
|
|
|
userIcon: popup.userIcon
|
2022-06-20 11:54:17 +00:00
|
|
|
onAccepted: popup.contactsStore.sendContactRequest(userPublicKey, message)
|
|
|
|
onClosed: popup.close()
|
|
|
|
}
|
|
|
|
|
2021-08-30 14:01:34 +00:00
|
|
|
rightButtons: [
|
|
|
|
StatusFlatButton {
|
2021-12-31 12:29:51 +00:00
|
|
|
text: userIsBlocked ?
|
2021-08-30 14:01:34 +00:00
|
|
|
qsTr("Unblock User") :
|
|
|
|
qsTr("Block User")
|
|
|
|
type: StatusBaseButton.Type.Danger
|
2022-06-20 14:48:38 +00:00
|
|
|
onClicked: userIsBlocked ? unblockUser() : blockUser()
|
2021-08-30 14:01:34 +00:00
|
|
|
},
|
2020-06-11 08:22:20 +00:00
|
|
|
|
2021-08-30 14:01:34 +00:00
|
|
|
StatusFlatButton {
|
2022-01-04 12:06:05 +00:00
|
|
|
visible: !userIsBlocked && isAddedContact
|
2021-08-30 14:01:34 +00:00
|
|
|
type: StatusBaseButton.Type.Danger
|
|
|
|
text: qsTr('Remove Contact')
|
2020-06-23 19:04:08 +00:00
|
|
|
onClicked: {
|
2022-06-22 12:16:21 +00:00
|
|
|
profileView.removeContactConfirmationDialog.parentPopup = popup;
|
|
|
|
profileView.removeContactConfirmationDialog.open();
|
2020-06-19 17:18:04 +00:00
|
|
|
}
|
2021-08-30 14:01:34 +00:00
|
|
|
},
|
2021-01-11 20:59:05 +00:00
|
|
|
|
|
|
|
StatusButton {
|
2022-06-20 11:54:17 +00:00
|
|
|
text: qsTr("Send Contact Request")
|
2022-01-04 12:06:05 +00:00
|
|
|
visible: !userIsBlocked && !isAddedContact
|
2022-06-20 11:54:17 +00:00
|
|
|
onClicked: sendContactRequestModal.open()
|
2021-01-12 20:51:00 +00:00
|
|
|
}
|
2021-08-30 14:01:34 +00:00
|
|
|
]
|
2020-06-04 10:30:49 +00:00
|
|
|
}
|