58 lines
1.4 KiB
QML
58 lines
1.4 KiB
QML
import QtQuick 2.13
|
|
import QtQuick.Controls 2.13
|
|
import QtQuick.Layouts 1.13
|
|
import QtGraphicalEffects 1.13
|
|
|
|
import StatusQ.Components 0.1
|
|
import StatusQ.Core.Backpressure 0.1
|
|
|
|
import utils 1.0
|
|
import shared.stores 1.0
|
|
|
|
Item {
|
|
id: root
|
|
property bool isPending: false
|
|
readonly property string uuid: Utils.uuid()
|
|
property int debounceDelay: 600
|
|
|
|
readonly property var validateAsync: Backpressure.debounce(inpAddress, debounceDelay, function (inputValue) {
|
|
root.isPending = true
|
|
var name = inputValue.startsWith("@") ? inputValue.substring(1) : inputValue
|
|
mainModule.resolveENS(name, uuid)
|
|
});
|
|
signal resolved(string resolvedAddress)
|
|
|
|
function resolveEns(name) {
|
|
if (Utils.isValidEns(name)) {
|
|
root.validateAsync(name)
|
|
}
|
|
}
|
|
width: 12
|
|
height: 12
|
|
|
|
Loader {
|
|
anchors.fill: parent
|
|
sourceComponent: loadingIndicator
|
|
active: root.isPending
|
|
}
|
|
|
|
Component {
|
|
id: loadingIndicator
|
|
StatusLoadingIndicator {
|
|
width: root.width
|
|
height: root.height
|
|
}
|
|
}
|
|
|
|
Connections {
|
|
target: mainModule
|
|
function onResolvedENS(resolvedPubKey: string, resolvedAddress: string, uuid: string) {
|
|
if (uuid !== root.uuid) {
|
|
return
|
|
}
|
|
root.isPending = false
|
|
root.resolved(resolvedAddress)
|
|
}
|
|
}
|
|
}
|