2020-12-18 20:55:33 +00:00
import QtQuick 2.12
import QtQuick . Controls 2.3
2022-11-28 14:57:56 +00:00
import QtQuick . Layouts 1.14
2020-12-18 20:55:33 +00:00
import QtGraphicalEffects 1.13
import QtQuick . Dialogs 1.3
2022-11-28 14:57:56 +00:00
import QtQml . Models 2.14
2021-09-28 15:04:06 +00:00
import utils 1.0
2021-10-27 21:27:49 +00:00
import shared . controls 1.0
2021-10-19 08:51:11 +00:00
import StatusQ . Core 0.1
import StatusQ . Core . Theme 0.1
2022-11-28 14:57:56 +00:00
import StatusQ . Popups . Dialog 0.1
import StatusQ . Controls 0.1
2021-10-19 08:51:11 +00:00
2022-11-28 14:57:56 +00:00
StatusDialog {
2021-10-22 20:49:47 +00:00
id: root
2021-11-30 14:49:36 +00:00
property var store
2022-11-28 14:57:56 +00:00
width: 640
title: qsTr ( "Import Community" )
2021-10-22 20:49:47 +00:00
2022-11-28 14:57:56 +00:00
QtObject {
id: d
property string importErrorMessage
readonly property string inputErrorMessage: isInputValid ? "" : qsTr ( "Invalid key" )
readonly property string errorMessage: importErrorMessage || inputErrorMessage
readonly property bool isPrivateKey: Utils . isPrivateKey ( keyInput . text )
readonly property bool isPublicKey: Utils . isChatKey ( keyInput . text )
readonly property bool isInputValid: isPrivateKey || isPublicKey
2021-03-10 14:25:06 +00:00
}
2022-11-28 14:57:56 +00:00
footer: StatusDialogFooter {
rightButtons: ObjectModel {
StatusFlatButton {
text: qsTr ( "Cancel" )
onClicked: root . reject ( )
}
StatusButton {
id: importButton
enabled: d . isInputValid
text: d . isPrivateKey ? qsTr ( "Make this an Owner Node" ) : qsTr ( "Import" )
onClicked: {
let communityKey = keyInput . text . trim ( ) ;
if ( d . isPrivateKey ) {
if ( ! communityKey . startsWith ( "0x" ) ) {
communityKey = "0x" + communityKey ;
}
root . store . importCommunity ( communityKey ) ;
root . close ( ) ;
}
if ( d . isPublicKey ) {
importButton . loading = true
2023-01-18 12:49:04 +00:00
root . store . requestCommunityInfo ( communityKey , true )
root . close ( ) ;
2022-11-28 14:57:56 +00:00
}
}
}
}
2020-12-18 20:55:33 +00:00
}
2022-11-28 14:57:56 +00:00
ColumnLayout {
anchors.fill: parent
spacing: Style . current . padding
2020-12-18 20:55:33 +00:00
2022-03-23 10:56:25 +00:00
StatusBaseText {
id: infoText1
2022-11-28 14:57:56 +00:00
Layout.fillWidth: true
text: qsTr ( "Enter the public key of the community you wish to access, or enter the private key of a community you own. Remember to always keep any private key safe and never share a private key with anyone else." )
2022-03-23 10:56:25 +00:00
wrapMode: Text . WordWrap
font.pixelSize: 13
color: Theme . palette . baseColor1
}
2022-11-28 14:57:56 +00:00
StatusBaseText {
id: inputLabel
text: qsTr ( "Community key" )
color: Theme . palette . directColor1
font.pixelSize: 15
}
StatusTextArea {
2021-03-10 14:25:06 +00:00
id: keyInput
2021-02-12 18:19:31 +00:00
placeholderText: "0x0..."
2022-11-28 14:57:56 +00:00
height: 110
Layout.fillWidth: true
onTextChanged: d . importErrorMessage = ""
}
2022-02-02 17:54:28 +00:00
2022-11-28 14:57:56 +00:00
StatusBaseText {
id: detectionLabel
Layout.fillWidth: true
horizontalAlignment: Text . AlignRight
verticalAlignment: Text . AlignVCenter
font.pixelSize: 13
visible: keyInput . text . trim ( ) !== ""
text: {
if ( d . errorMessage !== "" ) {
return d . errorMessage
}
if ( d . isPrivateKey ) {
return qsTr ( "Private key detected" )
}
if ( d . isPublicKey ) {
return qsTr ( "Public key detected" )
}
2022-02-02 17:54:28 +00:00
}
2022-11-28 14:57:56 +00:00
color: d . errorMessage === "" ? Theme.palette.successColor1 : Theme . palette . dangerColor1
2021-02-12 18:19:31 +00:00
}
2020-12-18 20:55:33 +00:00
}
2022-11-28 14:57:56 +00:00
Connections {
target: root . store
function onImportingCommunityStateChanged ( communityId , state , errorMsg ) {
let communityKey = keyInput . text . trim ( ) ;
if ( d . isPublicKey ) {
let currentCommunityKey = Utils . isCompressedPubKey ( communityKey ) ?
Utils . changeCommunityKeyCompression ( communityKey ) :
communityKey
if ( communityId == currentCommunityKey ) {
importButton . loading = false
if ( state === Constants . communityImported && root . opened ) {
root . close ( )
return
}
}
if ( state === Constants . communityImportingError ) {
d . importErrorMessage = errorMsg
importButton . loading = false
}
}
}
}
2020-12-18 20:55:33 +00:00
}