status-desktop/ui/app/AppLayouts/Profile/Sections/Ens/ENSDetails.qml

158 lines
4.7 KiB
QML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import QtQuick 2.14
import QtQuick.Layouts 1.3
import QtQuick.Controls 2.14
import "../../../../../imports"
import "../../../../../shared"
import "../../../../../shared/status/core"
import "../../../../../shared/status"
Item {
property string username: ""
property string walletAddress: "-"
property string key: "-"
property var expiration: 0
signal backBtnClicked();
signal usernameReleased(username: string);
StyledText {
id: sectionTitle
text: username
anchors.left: parent.left
anchors.leftMargin: 24
anchors.top: parent.top
anchors.topMargin: 24
font.weight: Font.Bold
font.pixelSize: 20
}
Component {
id: loadingImageComponent
StatusLoadingIndicator {}
}
Loader {
id: loadingImg
active: false
sourceComponent: loadingImageComponent
anchors.right: parent.right
anchors.rightMargin: Style.current.padding
anchors.top: parent.top
anchors.topMargin: Style.currentPadding
}
Connections {
target: profileModel.ens
onDetailsObtained: {
if(username != ensName) return;
walletAddressLbl.text = address;
walletAddressLbl.textToCopy = address;
keyLbl.text = pubkey.substring(0, 20) + "..." + pubkey.substring(pubkey.length - 20);
keyLbl.textToCopy = pubkey;
walletAddressLbl.visible = true;
keyLbl.visible = true;
releaseBtn.visible = isStatus
releaseBtn.enabled = (Date.now() / 1000) > expirationTime && expirationTime > 0 && profileModel.ens.preferredUsername != username
expiration = new Date(expirationTime * 1000).getTime()
}
onLoading: {
loadingImg.active = isLoading
if(!isLoading) return;
walletAddressLbl.visible = false;
keyLbl.visible = false;
releaseBtn.visible = false;
expiration = 0;
}
}
TextWithLabel {
id: walletAddressLbl
//% "Wallet address"
label: qsTrId("wallet-address")
visible: false
text: ""
textToCopy: ""
anchors.left: parent.left
anchors.leftMargin: 24
anchors.top: sectionTitle.bottom
anchors.topMargin: 24
}
TextWithLabel {
id: keyLbl
visible: false
//% "Key"
label: qsTrId("key")
text: ""
textToCopy: ""
anchors.left: parent.left
anchors.leftMargin: 24
anchors.top: walletAddressLbl.bottom
anchors.topMargin: 24
}
Component {
id: transactionDialogComponent
StatusETHTransactionModal {
onOpened: {
walletModel.gasView.getGasPricePredictions()
}
title: qsTr("Connect username with your pubkey")
onClosed: {
destroy()
}
estimateGasFunction: function(selectedAccount) {
if (username === "" || !selectedAccount) return 100000;
return profileModel.ens.releaseEstimate(Utils.removeStatusEns(username), selectedAccount.address)
}
onSendTransaction: function(selectedAddress, gasLimit, gasPrice, password) {
return profileModel.ens.release(username,
selectedAddress,
gasLimit,
gasPrice,
password)
}
onSuccess: function(){
usernameReleased(username);
}
width: 475
height: 500
}
}
StatusButton {
id: releaseBtn
visible: false
enabled: false
anchors.top: keyLbl.bottom
anchors.topMargin: 24
anchors.left: parent.left
anchors.leftMargin: 24
text: qsTrId("Release username")
onClicked: {
openPopup(transactionDialogComponent)
}
}
Text {
visible: releaseBtn.visible && !releaseBtn.enabled
anchors.top: releaseBtn.bottom
anchors.topMargin: 2
anchors.left: parent.left
anchors.leftMargin: 24
text: qsTr("Username locked. You wont be able to release it until %1").arg(Utils.formatShortDateStr(new Date(expiration).toDateString()))
color: Style.current.darkGrey
}
StatusButton {
anchors.bottom: parent.bottom
anchors.bottomMargin: Style.current.padding
anchors.horizontalCenter: parent.horizontalCenter
//% "Back"
text: qsTrId("back")
onClicked: backBtnClicked()
}
}