Browse Source

qml: improve validation of pubkey/connectstring

master
Sander van Grieken 1 year ago
parent
commit
96f7d91e3a
No known key found for this signature in database
GPG Key ID: 9BCF8209EA402EBA
  1. 24
      electrum/gui/qml/components/OpenChannelDialog.qml
  2. 3
      electrum/gui/qml/qeapp.py

24
electrum/gui/qml/components/OpenChannelDialog.qml

@ -82,6 +82,11 @@ ElDialog {
font.family: FixedFont font.family: FixedFont
wrapMode: Text.Wrap wrapMode: Text.Wrap
placeholderText: qsTr('Paste or scan node uri/pubkey') placeholderText: qsTr('Paste or scan node uri/pubkey')
inputMethodHints: Qt.ImhSensitiveData | Qt.ImhNoPredictiveText | Qt.ImhNoAutoUppercase
onTextChanged: {
if (activeFocus)
channelopener.connectStr = text
}
onActiveFocusChanged: { onActiveFocusChanged: {
if (!activeFocus) if (!activeFocus)
channelopener.connectStr = text channelopener.connectStr = text
@ -96,9 +101,17 @@ ElDialog {
icon.height: constants.iconSizeMedium icon.height: constants.iconSizeMedium
icon.width: constants.iconSizeMedium icon.width: constants.iconSizeMedium
onClicked: { onClicked: {
if (channelopener.validateConnectString(AppController.clipboardToText())) { var cliptext = AppController.clipboardToText()
channelopener.connectStr = AppController.clipboardToText() if (!cliptext)
return
if (channelopener.validateConnectString(cliptext)) {
channelopener.connectStr = cliptext
node.text = channelopener.connectStr node.text = channelopener.connectStr
} else {
var dialog = app.messageDialog.createObject(app, {
text: qsTr('Invalid node-id or connect string')
})
dialog.open()
} }
} }
} }
@ -109,12 +122,17 @@ ElDialog {
scale: 1.2 scale: 1.2
onClicked: { onClicked: {
var dialog = app.scanDialog.createObject(app, { var dialog = app.scanDialog.createObject(app, {
hint: qsTr('Scan a channel connect string') hint: qsTr('Scan a node-id or a connect string')
}) })
dialog.onFound.connect(function() { dialog.onFound.connect(function() {
if (channelopener.validateConnectString(dialog.scanData)) { if (channelopener.validateConnectString(dialog.scanData)) {
channelopener.connectStr = dialog.scanData channelopener.connectStr = dialog.scanData
node.text = channelopener.connectStr node.text = channelopener.connectStr
} else {
var errdialog = app.messageDialog.createObject(app, {
text: qsTr('Invalid node-id or connect string')
})
errdialog.open()
} }
dialog.close() dialog.close()
}) })

3
electrum/gui/qml/qeapp.py

@ -240,7 +240,8 @@ class QEAppController(BaseCrashReporter, QObject):
@pyqtSlot(result='QString') @pyqtSlot(result='QString')
def clipboardToText(self): def clipboardToText(self):
return QGuiApplication.clipboard().text() clip = QGuiApplication.clipboard()
return clip.text() if clip.mimeData().hasText() else ''
@pyqtSlot(str, result=QObject) @pyqtSlot(str, result=QObject)
def plugin(self, plugin_name): def plugin(self, plugin_name):

Loading…
Cancel
Save