status-desktop/ui/imports/shared/views/EnsResolver.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)
}
}
}