From 5d1d2d634a046a7f41f3c86f8102d0cb8e242d56 Mon Sep 17 00:00:00 2001 From: Vlad Stan Date: Wed, 27 Jul 2022 09:48:52 +0300 Subject: [PATCH] feat: prompt for `Connect` and `Login` before signing --- .../static/components/payment/payment.js | 17 +- .../components/serial-signer/serial-signer.js | 7 + .../extensions/watchonly/static/js/index.js | 3 - .../watchonly/templates/watchonly/index.html | 288 +----------------- 4 files changed, 23 insertions(+), 292 deletions(-) diff --git a/lnbits/extensions/watchonly/static/components/payment/payment.js b/lnbits/extensions/watchonly/static/components/payment/payment.js index a7cc9d8f..b6229096 100644 --- a/lnbits/extensions/watchonly/static/components/payment/payment.js +++ b/lnbits/extensions/watchonly/static/components/payment/payment.js @@ -10,6 +10,7 @@ async function payment(path) { 'utxos', 'mempool_endpoint', 'sats_denominated', + 'serial-signer-ref', 'adminkey' ], watch: { @@ -76,9 +77,21 @@ async function payment(path) { return satOrBtc(val, showUnit, this['sats_denominated']) }, checkAndSend: async function () { + this.showChecking = true try { - console.log('### this.checkAndSend') - this.showChecking = true + console.log( + '### this.checkAndSend', + this.serialSignerRef.isConnected() + ) + if (!this.serialSignerRef.isConnected()) { + await this.serialSignerRef.openSerialPort() + return + } + if (!this.serialSignerRef.isAuthenticated()) { + await this.serialSignerRef.hwwShowPasswordDialog() + return + } + await this.createPsbt() } catch (error) { } finally { diff --git a/lnbits/extensions/watchonly/static/components/serial-signer/serial-signer.js b/lnbits/extensions/watchonly/static/components/serial-signer/serial-signer.js index c0c4cf2b..22b13510 100644 --- a/lnbits/extensions/watchonly/static/components/serial-signer/serial-signer.js +++ b/lnbits/extensions/watchonly/static/components/serial-signer/serial-signer.js @@ -107,6 +107,13 @@ async function serialSigner(path) { } }, + isConnected: function () { + return !!this.selectedPort + }, + isAuthenticated: function () { + return this.hww.authenticated + }, + checkSerialPortSupported: function () { if (!navigator.serial) { this.$q.notify({ diff --git a/lnbits/extensions/watchonly/static/js/index.js b/lnbits/extensions/watchonly/static/js/index.js index a3d7e19f..a01e0e10 100644 --- a/lnbits/extensions/watchonly/static/js/index.js +++ b/lnbits/extensions/watchonly/static/js/index.js @@ -273,9 +273,6 @@ const watchOnly = async () => { }, //################### SERIAL PORT ################### - sharePsbtWithAnimatedQRCode: async function () { - console.log('### sharePsbtWithAnimatedQRCode') - }, //################### HARDWARE WALLET ################### //################### UTXOs ################### diff --git a/lnbits/extensions/watchonly/templates/watchonly/index.html b/lnbits/extensions/watchonly/templates/watchonly/index.html index 5ac2c2df..0dda9657 100644 --- a/lnbits/extensions/watchonly/templates/watchonly/index.html +++ b/lnbits/extensions/watchonly/templates/watchonly/index.html @@ -107,293 +107,6 @@ :mempool_endpoint="config.data.mempool_endpoint" :sats-denominated="config.data.sats_denominated" > - -
-
- Check Tx -
-
- -
-
- -
-
- - - - - Serial Port Device - Connect via Serial Port and sign. - - - - - - Animated QR Code - Share and Scan using animated QR - codes. - - - - -
-
- -
-
- -
-
- Connect - Disconnect -
-
- -
-
-
- -
-
- - -
-
- -
-
- -
-
-
-
-
-
- -
-
- -
-
- Confirm - - -
-
- -
-
- Check transaction data on the Hardware Wallet - display -
-
-
-
- -
- -
-
- -
-
- Send Payment -
-
- Transaction Details - -
-
-
-
-
-
-
Version
-
{{payment.signedTx.version}}
-
-
-
Locktime
-
{{payment.signedTx.locktime}}
-
-
-
Fee
-
- {{satBtc(payment.signedTx.fee)}} - -
-
- - Outputs - -
-
- {{satBtc(out.amount)}} -
- -
- {{out.address}} -
-
-
-
- - -
-
Transaction Id
- -
-
-
@@ -405,6 +118,7 @@ :addresses="addresses" :utxos="utxos.data" :adminkey="g.user.wallets[0].adminkey" + :serial-signer-ref="$refs.serialSigner" >