diff --git a/static/js/components.js b/static/js/components.js
index 9a42596..d917d9f 100644
--- a/static/js/components.js
+++ b/static/js/components.js
@@ -1,7 +1,7 @@
Vue.component(VueQrcode.name, VueQrcode)
Vue.component('satspay-paid', {
- props: ['charge', 'timer'],
+ props: ['charge'],
template: `
0) {
this.barColor = 'secondary'
setInterval(() => {
if (!this.charge.paid && this.timeSeconds > 0) {
this.timeSeconds -= 1
this.timeLeft = secondsToTime(this.timeSeconds)
- this.progress = progress(chargeTimeSeconds, this.timeSeconds)
- console.log(this.timeSeconds, chargeTimeSeconds, this.progress)
+ this.progress = progress(this.charge.time * 60, this.timeSeconds)
+ }
+ if (this.charge.paid) {
+ this.barColor = 'positive'
+ this.progress = 1
}
}, 1000)
}
diff --git a/static/js/display.js b/static/js/display.js
index 9225ca4..a482aad 100644
--- a/static/js/display.js
+++ b/static/js/display.js
@@ -6,19 +6,22 @@ new Vue({
return {
charge: mapCharge(charge_data),
network: network,
- pendingFunds: 0,
ws: null,
- newProgress: 0.4,
- counter: 1,
wallet: {
inkey: ''
},
- timer: 0,
- cancelListener: () => {},
tab: 'uqr'
}
},
computed: {
+ mempoolLink() {
+ const onchainaddress = this.charge.onchainaddress
+ if (this.network === 'Testnet') {
+ return `https://mempool.space/testnet/address/${onchainaddress}`
+ } else {
+ return `https://mempool.space/address/${onchainaddress}`
+ }
+ },
unifiedQR() {
const bitcoin = (this.charge.onchainaddress || '').toUpperCase()
let queryString = `bitcoin:${bitcoin}?amount=${(
@@ -44,8 +47,9 @@ new Vue({
this.ws.addEventListener('message', async ({data}) => {
const res = JSON.parse(data.toString())
this.charge.balance = res.balance
+ this.charge.pending = res.pending
if (res.paid) {
- this.charge.progress = 0
+ this.charge.progress = 1
this.charge.paid = true
this.$q.notify({
type: 'positive',
@@ -55,13 +59,11 @@ new Vue({
}
})
this.ws.addEventListener('close', async () => {
- console.log('ws closed')
this.$q.notify({
type: 'negative',
message: 'WebSocket connection closed. Retrying...',
timeout: 1000
})
- console.log('retrying ws connection...')
setTimeout(() => {
this.initWs()
}, 3000)
diff --git a/tasks.py b/tasks.py
index 929ae3b..10bb5fe 100644
--- a/tasks.py
+++ b/tasks.py
@@ -30,10 +30,10 @@ async def send_success_websocket(charge: Charge):
if charge_id == charge.id:
await listener.send_json(
{
- "paid": True,
+ "paid": charge.paid,
"balance": charge.balance,
"pending": charge.pending,
- "completelink": charge.completelink,
+ "completelink": charge.completelink if charge.paid else None,
}
)
@@ -96,19 +96,14 @@ def sum_transactions(address: str, txs):
async def _handle_ws_message(address: str, data: dict):
charge = await get_charge_by_onchain_address(address)
assert charge, f"Charge with address `{address}` does not exist."
-
- for charge_id, listener in public_ws_listeners.items():
- if charge_id == charge.id:
- await listener.send_json(data)
-
unconfirmed_balance = sum_transactions(address, data.get("mempool", []))
confirmed_balance = sum_transactions(address, data.get("confirmed", []))
if charge.zeroconf:
confirmed_balance += unconfirmed_balance
charge.balance = confirmed_balance
charge.pending = unconfirmed_balance
+ await send_success_websocket(charge)
if charge.paid:
- await send_success_websocket(charge)
stop_onchain_listener(address)
if charge.webhook:
resp = await call_webhook(charge)
diff --git a/templates/satspay/display.html b/templates/satspay/display.html
index d7a6387..94d511e 100644
--- a/templates/satspay/display.html
+++ b/templates/satspay/display.html
@@ -48,15 +48,15 @@
-
-
+
+
Amount pending:
- ${pendingFunds} sats
+ ${charge.pending} sats
@@ -91,7 +91,6 @@
@@ -161,7 +160,7 @@