207 lines
6.1 KiB
QML
207 lines
6.1 KiB
QML
import QtQuick 2.15
|
|
import QtQuick.Controls 2.15
|
|
import QtQuick.Layouts 1.15
|
|
import QtQml 2.15
|
|
import Qt.labs.settings 1.0
|
|
|
|
import StatusQ.Core 0.1
|
|
import StatusQ.Core.Utils 0.1
|
|
import StatusQ.Controls 0.1
|
|
import StatusQ.Components 0.1
|
|
import StatusQ.Core.Theme 0.1
|
|
import StatusQ.Popups.Dialog 0.1
|
|
|
|
import Models 1.0
|
|
import Storybook 1.0
|
|
|
|
import AppLayouts.Wallet.views.walletconnect 1.0
|
|
|
|
import SortFilterProxyModel 0.2
|
|
|
|
import utils 1.0
|
|
|
|
import nim 1.0
|
|
|
|
Item {
|
|
id: root
|
|
|
|
WalletConnect {
|
|
id: wc
|
|
|
|
anchors.top: parent.bottom
|
|
anchors.left: parent.left
|
|
url: `${pagesFolder}/../stubs/AppLayouts/Wallet/views/walletconnect/src/index.html`
|
|
|
|
controller: WalletConnectController {
|
|
sessionProposal: function(sessionProposalJson) {
|
|
respondSessionProposal(sessionProposalJson, `{"eip155":{"methods":["eth_sendTransaction","eth_sendRawTransaction","personal_sign","eth_sign","eth_signTransaction","eth_signTypedData","wallet_switchEthereumChain"],"chains":["eip155:5"],"events":["accountsChanged","chainChanged"],"accounts":["eip155:5:0xE2d622C817878dA5143bBE06866ca8E35273Ba8a"]}}`, "")
|
|
}
|
|
|
|
recordSuccessfulPairing: function(sessionProposalJson) {
|
|
const sessionProposal = JSON.parse(sessionProposalJson)
|
|
|
|
pairingsModel.append({
|
|
topic: sessionProposal.params.pairingTopic,
|
|
expiry: sessionProposal.params.expiry,
|
|
active: true,
|
|
peerMetadata: {
|
|
name: sessionProposal.params.proposer.metadata.name,
|
|
url: sessionProposal.params.proposer.metadata.url,
|
|
icons: sessionProposal.params.proposer.metadata.icons,
|
|
}
|
|
})
|
|
root.saveListModel(pairingsModel)
|
|
}
|
|
deletePairing: function(pairingTopic) {
|
|
var found = false
|
|
for (var i = 0; i < pairingsModel.count; i++) {
|
|
if (pairingsModel.get(i).topic === pairingTopic) {
|
|
pairingsModel.get(i).active = false
|
|
found = true
|
|
break;
|
|
}
|
|
}
|
|
if (!found) {
|
|
console.error("Mock Controller: pairing not found", pairingTopic)
|
|
}
|
|
root.saveListModel(pairingsModel)
|
|
}
|
|
sessionRequest: function(sessionRequestJson, password) {
|
|
const signedJson = "0x1234567890"
|
|
this.respondSessionRequest(sessionRequestJson, signedJson, respondError.checked)
|
|
}
|
|
|
|
hasActivePairings: settings.hasActivePairings
|
|
projectId: "87815d72a81d739d2a7ce15c2cfdefb3"
|
|
}
|
|
|
|
clip: true
|
|
}
|
|
|
|
// qml Splitter
|
|
SplitView {
|
|
anchors.fill: parent
|
|
|
|
ColumnLayout {
|
|
SplitView.fillWidth: true
|
|
|
|
StatusButton {
|
|
id: openModalButton
|
|
text: "OpenModal"
|
|
onClicked: {
|
|
wc.modal.open()
|
|
}
|
|
}
|
|
ColumnLayout {}
|
|
}
|
|
|
|
ColumnLayout {
|
|
id: optionsSpace
|
|
|
|
StatusRadioButton {
|
|
text: "WebEngine running"
|
|
checked: wc.sdk.webEngineLoader.active
|
|
enabled: false
|
|
}
|
|
|
|
RowLayout {
|
|
id: optionsHeader
|
|
|
|
Text { text: "projectId" }
|
|
Text {
|
|
readonly property string projectId: wc.controller.projectId
|
|
text: projectId.substring(0, 3) + "..." + projectId.substring(projectId.length - 3)
|
|
font.bold: true
|
|
}
|
|
}
|
|
StatusCheckBox {
|
|
id: hasActivePairingsCheckBox
|
|
text: "Has active pairings"
|
|
checked: settings.hasActivePairings
|
|
}
|
|
StatusCheckBox {
|
|
id: respondError
|
|
text: "Respond Error"
|
|
checked: false
|
|
}
|
|
|
|
StatusBaseText { text: "Pairings History"; font.bold: true }
|
|
StatusButton {
|
|
text: "Clear"
|
|
onClicked: { pairingsModel.clear(); root.saveListModel(pairingsModel); }
|
|
}
|
|
Pairings {
|
|
id: pairingsView
|
|
|
|
Layout.fillWidth: true
|
|
Layout.minimumWidth: count > 0 ? 400 : 0
|
|
Layout.preferredHeight: contentHeight
|
|
Layout.maximumHeight: 300
|
|
|
|
onDisconnect: function(pairingTopic) {
|
|
wc.sdk.disconnectPairing(pairingTopic)
|
|
}
|
|
|
|
model: ListModel {
|
|
id: pairingsModel
|
|
}
|
|
clip: true
|
|
}
|
|
|
|
RowLayout {
|
|
StatusButton {
|
|
text: "Trigger Deep-Link"
|
|
onClicked: {
|
|
wc.controller.requestOpenWalletConnectPopup(deepLinkInput.text)
|
|
}
|
|
}
|
|
|
|
StatusInput {
|
|
id: deepLinkInput
|
|
|
|
Layout.preferredWidth: 300
|
|
|
|
placeholderText: "wc:a4f32854428af0f5b66...."
|
|
}
|
|
}
|
|
|
|
// spacer
|
|
ColumnLayout {}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
Settings {
|
|
id: settings
|
|
|
|
property bool hasActivePairings: hasActivePairingsCheckBox.checked
|
|
property string pairingsHistory: ""
|
|
}
|
|
|
|
Component.onCompleted: {
|
|
loadListModel(pairingsModel)
|
|
}
|
|
|
|
function saveListModel(model) {
|
|
var listArray = [];
|
|
for (var i = 0; i < model.count; i++) {
|
|
listArray.push(model.get(i));
|
|
}
|
|
settings.pairingsHistory = JSON.stringify(listArray);
|
|
}
|
|
|
|
function loadListModel(model) {
|
|
pairingsModel.clear();
|
|
if (!settings.pairingsHistory) {
|
|
return;
|
|
}
|
|
var listArray = JSON.parse(settings.pairingsHistory);
|
|
listArray.forEach(function(entry) {
|
|
pairingsModel.append(entry);
|
|
});
|
|
}
|
|
}
|
|
|
|
// category: Popups
|