diff --git a/lnbits/extensions/watchonly/models.py b/lnbits/extensions/watchonly/models.py index d499c5044..cce93b480 100644 --- a/lnbits/extensions/watchonly/models.py +++ b/lnbits/extensions/watchonly/models.py @@ -82,7 +82,7 @@ class CreatePsbt(BaseModel): class ExtractPsbt(BaseModel): - psbtBase64 = "" + psbtBase64 = "" # // todo snake case class SignedTransaction(BaseModel): @@ -90,6 +90,10 @@ class SignedTransaction(BaseModel): tx_json: Optional[str] +class BroadcastTransaction(BaseModel): + tx_hex: str + + class Config(BaseModel): mempool_endpoint = "https://mempool.space" receive_gap_limit = 20 diff --git a/lnbits/extensions/watchonly/static/js/index.js b/lnbits/extensions/watchonly/static/js/index.js index bbfe2ad72..79a0e6e37 100644 --- a/lnbits/extensions/watchonly/static/js/index.js +++ b/lnbits/extensions/watchonly/static/js/index.js @@ -639,8 +639,10 @@ new Vue({ ) if (data) { this.payment.signedTx = JSON.parse(data.tx_json) + this.payment.signedTxHex = data.tx_hex } else { this.payment.signedTx = null + his.payment.signedTxHex = null } } } else { @@ -688,6 +690,27 @@ new Vue({ console.log('### sharePsbtWithAnimatedQRCode') }, + broadcastTransaction: async function () { + console.log('### broadcastTransaction', this.payment.signedTxHex) + + try { + const wallet = this.g.user.wallets[0] + await LNbits.api.request( + 'POST', + '/watchonly/api/v1/tx', + wallet.adminkey, + {tx_hex: this.payment.signedTxHex} + ) + } catch (error) { + this.$q.notify({ + type: 'warning', + message: 'Failed to broadcast!', + caption: `${error}`, + timeout: 10000 + }) + } + }, + //################### UTXOs ################### scanAllAddresses: async function () { await this.refreshAddresses() diff --git a/lnbits/extensions/watchonly/static/js/tables.js b/lnbits/extensions/watchonly/static/js/tables.js index ffb095b39..616b70606 100644 --- a/lnbits/extensions/watchonly/static/js/tables.js +++ b/lnbits/extensions/watchonly/static/js/tables.js @@ -262,6 +262,8 @@ const tableData = { psbtBase64: '', psbtBase64Signed: '', signedTx: null, + signedTxHex: null, + sentTxId: null, utxoSelectionModes: [ 'Manual', 'Random', diff --git a/lnbits/extensions/watchonly/templates/watchonly/index.html b/lnbits/extensions/watchonly/templates/watchonly/index.html index fe7bd59eb..18414480d 100644 --- a/lnbits/extensions/watchonly/templates/watchonly/index.html +++ b/lnbits/extensions/watchonly/templates/watchonly/index.html @@ -182,14 +182,13 @@ :disabled="scan.scanning == true" >Scan Blockchain -