From df09a322806e6678ca2f755d9bb4fe2d01f02301 Mon Sep 17 00:00:00 2001 From: Nathan Woodburn Date: Fri, 27 Jun 2025 14:08:01 +1000 Subject: [PATCH] feat: Simplify tx page --- FireWalletBrowser.bsdesign | Bin 342433 -> 342443 bytes render.py | 66 ++++++++++++++++++++++++------------- templates/tx.html | 12 +++---- 3 files changed, 50 insertions(+), 28 deletions(-) diff --git a/FireWalletBrowser.bsdesign b/FireWalletBrowser.bsdesign index c795c8dec0a18d02cd3eb12381d960f4bea29ea4..0851dfcc9487ba6e5b3a9656bd8bf2514fcc7c49 100644 GIT binary patch delta 4232 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 delta 4222 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 U4uxDlr!|@UA1lg08XmnC02-D(jsO4v diff --git a/render.py b/render.py index 9e388ce..5d25bd0 100644 --- a/render.py +++ b/render.py @@ -30,6 +30,7 @@ elif HSD_NETWORK == "regtest": HSD_WALLET_PORT = 14039 HSD_NODE_PORT = 14037 +CONVERT_NAME = False hsd = api.hsd(HSD_API, HSD_IP, HSD_NODE_PORT) @@ -96,11 +97,20 @@ def transactions(txs): if len(txs) == 0: return 'No transactions found' html = '' - for tx in txs: + print(f"Processing {len(txs)} transactions") + for tx in txs: action = "HNS Transfer" address = tx["outputs"][0]["address"] hash = tx["hash"] confirmations=tx["confirmations"] + mined_date = "Pending" + if confirmations >= 1: + mined_date = tx["mdate"] + if mined_date is None: + mined_date = "Pending" + else: + # Format 2025-06-27T01:49:14Z + mined_date = datetime.datetime.strptime(mined_date, "%Y-%m-%dT%H:%M:%SZ").strftime("%d %b %Y") incomming = True amount = 0 isMulti = False @@ -140,36 +150,42 @@ def transactions(txs): humanAction = action if action == "HNS Transfer": - if amount > 0: - humanAction = "Received HNS" + if amount >= 0: + humanAction = f"Received {amount:,.2f} HNS" else: - humanAction = "Sent HNS" + humanAction = f"Sent {(amount*-1):,.2f} HNS" elif action == "FINALIZE": if incomming and not isMulti: - name = hsd.rpc_getNameByHash(nameHashes[0]) - if name["error"] is None: - name = name["result"] - humanAction = f"Received {renderDomain(name)}" + humanAction = "Received Domain" + if CONVERT_NAME: + name = hsd.rpc_getNameByHash(nameHashes[0]) + if name["error"] is None: + name = name["result"] + humanAction = f"Received {renderDomain(name)}" elif incomming and isMulti: humanAction = "Received Multiple Domains" elif not isMulti: - name = hsd.rpc_getNameByHash(nameHashes[0]) - if name["error"] is None: - name = name["result"] - humanAction = f"Finalized {renderDomain(name)}" + humanAction = "Finalized Domain Transfer" + if CONVERT_NAME: + name = hsd.rpc_getNameByHash(nameHashes[0]) + if name["error"] is None: + name = name["result"] + humanAction = f"Finalized {renderDomain(name)}" else: humanAction = "Finalized Multiple Domain Transfers" elif isMulti: humanAction = actionMapPlural.get(action, "Unknown Action") else: humanAction = actionMap.get(action, "Unknown Action") - name = hsd.rpc_getNameByHash(nameHashes[0]) - if name["error"] is None: - name = name["result"] + if CONVERT_NAME: + name = hsd.rpc_getNameByHash(nameHashes[0]) + if name["error"] is None: + name = name["result"] + else: + name = None + humanAction += renderDomain(name) if name else "domain" else: - name = None - humanAction += renderDomain(name) if name else "domain" - + humanAction += "domain" if amount < 0: amount = f"{amount:,.2f}" elif amount > 0: @@ -179,12 +195,18 @@ def transactions(txs): # hash = f"{hash[:8]}..." + txdate = "" if confirmations < 5: - confirmations = f"{confirmations}" + txdate = f"{mined_date}" else: - confirmations = f"{confirmations:,}" - - html += f'{humanAction}{address}{confirmations}{amount} HNS' + txdate = f"{mined_date}" + # confirmations = f"{confirmations:,}" + html += f''' + + {txdate} + {humanAction} + + ''' return html diff --git a/templates/tx.html b/templates/tx.html index d60a5d8..d740a23 100644 --- a/templates/tx.html +++ b/templates/tx.html @@ -82,10 +82,10 @@ + - - - + + @@ -102,10 +102,10 @@ + - - - + +
Date TransactionAddressConfirmationsAmount
Date TransactionAddressConfirmationsAmount