feat(@wallet): confirmation and restart when changing rpc endpoint
This commit is contained in:
parent
2b6f2229c7
commit
a6be5bd4fb
|
@ -2,6 +2,7 @@ import QtQuick 2.13
|
||||||
import QtQuick.Layouts 1.13
|
import QtQuick.Layouts 1.13
|
||||||
|
|
||||||
import StatusQ.Core 0.1
|
import StatusQ.Core 0.1
|
||||||
|
import StatusQ.Popups 0.1
|
||||||
import StatusQ.Core.Theme 0.1
|
import StatusQ.Core.Theme 0.1
|
||||||
import StatusQ.Controls 0.1
|
import StatusQ.Controls 0.1
|
||||||
|
|
||||||
|
@ -96,6 +97,19 @@ ColumnLayout {
|
||||||
return p1 + p2.replace(/./g, '*');
|
return p1 + p2.replace(/./g, '*');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function save() {
|
||||||
|
let main = mainRpcInput.text
|
||||||
|
let fallback = failoverRpcUrlInput.text
|
||||||
|
if (main === d.mask(network.originalRpcURL)) {
|
||||||
|
main = network.originalRpcURL
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fallback === d.mask(network.originalFallbackURL)) {
|
||||||
|
fallback = network.originalFallbackURL
|
||||||
|
}
|
||||||
|
root.updateNetworkValues(network.chainId, main, fallback, false)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Connections {
|
Connections {
|
||||||
|
@ -163,7 +177,7 @@ ColumnLayout {
|
||||||
anchors.topMargin: 4
|
anchors.topMargin: 4
|
||||||
anchors.right: parent.right
|
anchors.right: parent.right
|
||||||
elide: Text.ElideRight
|
elide: Text.ElideRight
|
||||||
text: qsTr("Required")
|
text: qsTr("Required (changes require restart)")
|
||||||
font.pixelSize: 12
|
font.pixelSize: 12
|
||||||
color: Theme.palette.baseColor1
|
color: Theme.palette.baseColor1
|
||||||
}
|
}
|
||||||
|
@ -210,27 +224,40 @@ ColumnLayout {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
StatusInput {
|
Item {
|
||||||
id: failoverRpcUrlInput
|
|
||||||
objectName: "failoverRpcUrlInputObject"
|
|
||||||
input.edit.objectName: "editNetworkFailoverRpcUrlInput"
|
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
label: qsTr("Failover JSON RPC URL")
|
Layout.preferredHeight: childrenRect.height
|
||||||
text: {
|
StatusBaseText {
|
||||||
if (!network) {
|
id: optionalText
|
||||||
return ""
|
anchors.top: parent.top
|
||||||
}
|
anchors.topMargin: 4
|
||||||
if (network.originalFallbackURL === network.fallbackURL) {
|
anchors.right: parent.right
|
||||||
return d.mask(network.fallbackURL)
|
elide: Text.ElideRight
|
||||||
}
|
text: qsTr("Optional (changes require restart)")
|
||||||
return network.fallbackURL
|
font.pixelSize: 12
|
||||||
|
color: Theme.palette.baseColor1
|
||||||
}
|
}
|
||||||
onTextChanged: {
|
StatusInput {
|
||||||
if (text === "") {
|
id: failoverRpcUrlInput
|
||||||
d.evaluationStatusFallBackRpc = EditNetworkForm.Empty
|
objectName: "failoverRpcUrlInputObject"
|
||||||
return
|
input.edit.objectName: "editNetworkFailoverRpcUrlInput"
|
||||||
|
width: parent.width
|
||||||
|
label: qsTr("Failover JSON RPC URL")
|
||||||
|
text: {
|
||||||
|
if (!network) {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
if (network.originalFallbackURL === network.fallbackURL) {
|
||||||
|
return d.mask(network.fallbackURL)
|
||||||
|
}
|
||||||
|
return network.fallbackURL
|
||||||
}
|
}
|
||||||
else {
|
onTextChanged: {
|
||||||
|
if (text === "") {
|
||||||
|
d.evaluationStatusFallBackRpc = EditNetworkForm.Empty
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
if ((d.mask(network.originalFallbackURL) === text) ||
|
if ((d.mask(network.originalFallbackURL) === text) ||
|
||||||
(network.fallbackURL === text)) {
|
(network.fallbackURL === text)) {
|
||||||
d.evaluationStatusFallBackRpc = EditNetworkForm.UnTouched
|
d.evaluationStatusFallBackRpc = EditNetworkForm.UnTouched
|
||||||
|
@ -239,11 +266,11 @@ ColumnLayout {
|
||||||
Qt.callLater(d.evaluateRpcEndPoint, text, false);
|
Qt.callLater(d.evaluateRpcEndPoint, text, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
errorMessageCmp.horizontalAlignment: d.getErrorMessageAlignment(d.evaluationStatusFallBackRpc)
|
||||||
|
errorMessageCmp.visible: d.evaluationStatusFallBackRpc !== EditNetworkForm.UnTouched
|
||||||
|
errorMessageCmp.text: d.getUrlStatusText(d.evaluationStatusFallBackRpc, text)
|
||||||
|
errorMessageCmp.color: d.getErrorMessageColor(d.evaluationStatusFallBackRpc)
|
||||||
}
|
}
|
||||||
errorMessageCmp.horizontalAlignment: d.getErrorMessageAlignment(d.evaluationStatusFallBackRpc)
|
|
||||||
errorMessageCmp.visible: d.evaluationStatusFallBackRpc !== EditNetworkForm.UnTouched
|
|
||||||
errorMessageCmp.text: d.getUrlStatusText(d.evaluationStatusFallBackRpc, text)
|
|
||||||
errorMessageCmp.color: d.getErrorMessageColor(d.evaluationStatusFallBackRpc)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
StatusInput {
|
StatusInput {
|
||||||
|
@ -291,17 +318,69 @@ ColumnLayout {
|
||||||
) && warningCheckbox.checked
|
) && warningCheckbox.checked
|
||||||
|
|
||||||
onClicked: {
|
onClicked: {
|
||||||
let main = mainRpcInput.text
|
Global.openPopup(confirmationDialogComponent)
|
||||||
let fallback = failoverRpcUrlInput.text
|
|
||||||
if (main === d.mask(network.originalRpcURL)) {
|
|
||||||
main = network.originalRpcURL
|
|
||||||
}
|
|
||||||
|
|
||||||
if (fallback === d.mask(network.originalFallbackURL)) {
|
|
||||||
fallback = network.originalFallbackURL
|
|
||||||
}
|
|
||||||
root.updateNetworkValues(network.chainId, main, fallback, false)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Component {
|
||||||
|
id: confirmationDialogComponent
|
||||||
|
StatusModal {
|
||||||
|
headerSettings.title: qsTr("RPC URL change requires app restart")
|
||||||
|
contentItem: Item {
|
||||||
|
width: parent.width
|
||||||
|
implicitHeight: childrenRect.height
|
||||||
|
Column {
|
||||||
|
width: parent.width - 32
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
|
||||||
|
Item {
|
||||||
|
width: parent.width
|
||||||
|
height: 16
|
||||||
|
}
|
||||||
|
|
||||||
|
StatusBaseText {
|
||||||
|
text: qsTr("For new JSON RPC URLs to take effect, Status must be restarted. Are you ready to do this now?")
|
||||||
|
font.pixelSize: 15
|
||||||
|
anchors.left: parent.left
|
||||||
|
anchors.right: parent.right
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
color: Theme.palette.directColor1
|
||||||
|
}
|
||||||
|
|
||||||
|
Item {
|
||||||
|
width: parent.width
|
||||||
|
height: 16
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
rightButtons: [
|
||||||
|
StatusFlatButton {
|
||||||
|
id: laterButton
|
||||||
|
text: qsTr("Save and restart later")
|
||||||
|
type: StatusBaseButton.Type.Normal
|
||||||
|
onClicked: {
|
||||||
|
close()
|
||||||
|
d.save()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
StatusButton {
|
||||||
|
id: saveButton
|
||||||
|
type: StatusBaseButton.Type.Normal
|
||||||
|
text: qsTr("Save and restart Status")
|
||||||
|
focus: true
|
||||||
|
Keys.onReturnPressed: function(event) {
|
||||||
|
saveButton.clicked()
|
||||||
|
}
|
||||||
|
onClicked: {
|
||||||
|
close()
|
||||||
|
d.save()
|
||||||
|
Qt.quit()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue