From a8c7dbe716e4ab705b8afad02b3accdde19d7764 Mon Sep 17 00:00:00 2001 From: Nathan Woodburn Date: Thu, 26 Jun 2025 12:34:46 +1000 Subject: [PATCH] fix: Unify api route --- FireWalletBrowser.bsdesign | Bin 339400 -> 339400 bytes main.py | 94 +++++++++++++++++-------------------- templates/tx.html | 2 +- 3 files changed, 44 insertions(+), 52 deletions(-) diff --git a/FireWalletBrowser.bsdesign b/FireWalletBrowser.bsdesign index 78b228bc193064a9c98718436b0a3e6093cf0cd9..d89b3ef7434b06f371e32bfbd462f1d7e25373a1 100644 GIT binary patch delta 1379 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 diff --git a/main.py b/main.py index fed77a7..dc456af 100644 --- a/main.py +++ b/main.py @@ -1508,57 +1508,6 @@ def api_hsd(function): return jsonify({"result": account_module.getBlockHeight()}) return jsonify({"error": "Invalid function", "result": "Invalid function"}), 400 - -@app.route('/api/v1/transactions', methods=["GET"]) -def api_transactions(): - # Check if the user is logged in - if request.cookies.get("account") is None: - return jsonify({"error": "Not logged in"}) - - account = account_module.check_account(request.cookies.get("account")) - if not account: - return jsonify({"error": "Invalid account"}) - - # Get the page parameter - page = request.args.get('page') - try: - page = int(page) - except: - page = 1 - - if page < 1: - page = 1 - - # Check for force refresh parameter - force_refresh = request.args.get('refresh') == 'true' - - # Create a cache key based on account and page - cache_key = f"{account}_{page}" - - # Check if data is in cache and not expired - current_time = time.time() - if not force_refresh and cache_key in tx_cache and (current_time - tx_cache[cache_key]['time'] < TX_CACHE_TIMEOUT): - transactions = tx_cache[cache_key]['data'] - txCount = len(transactions) - transactions_html = tx_cache[cache_key]['html'] - else: - # Fetch transactions from account module - transactions = account_module.getTransactions(account, page) - txCount = len(transactions) - transactions_html = render.transactions(transactions) - - # Store in cache - tx_cache[cache_key] = { - 'data': transactions, - 'html': transactions_html, - 'time': current_time - } - - return jsonify({ - "html": transactions_html, - "txCount": txCount, - "page": page - }) @app.route('/api/v1/wallet/', methods=["GET"]) def api_wallet(function): @@ -1610,6 +1559,49 @@ def api_wallet(function): return jsonify({"result": domains}) + if function == "transactions": + # Get the page parameter + page = request.args.get('page') + try: + page = int(page) + except: + page = 1 + + if page < 1: + page = 1 + + # Check for force refresh parameter + force_refresh = request.args.get('refresh') == 'true' + + # Create a cache key based on account and page + cache_key = f"{account}_{page}" + + # Check if data is in cache and not expired + current_time = time.time() + if not force_refresh and cache_key in tx_cache and (current_time - tx_cache[cache_key]['time'] < TX_CACHE_TIMEOUT): + transactions = tx_cache[cache_key]['data'] + txCount = len(transactions) + transactions_html = tx_cache[cache_key]['html'] + else: + # Fetch transactions from account module + transactions = account_module.getTransactions(account, page) + txCount = len(transactions) + transactions_html = render.transactions(transactions) + + # Store in cache + tx_cache[cache_key] = { + 'data': transactions, + 'html': transactions_html, + 'time': current_time + } + + return jsonify({ + "html": transactions_html, + "txCount": txCount, + "page": page + }) + + if function == "icon": # Check if there is an icon if not os.path.exists(f'user_data/images'): diff --git a/templates/tx.html b/templates/tx.html index 92b9bda..f719967 100644 --- a/templates/tx.html +++ b/templates/tx.html @@ -119,7 +119,7 @@ const loadingRow = document.getElementById('loading-row'); // Fetch transactions - fetch(`/api/v1/transactions?page=${page}`) + fetch(`/api/v1/wallet/transactions?page=${page}`) .then(response => response.json()) .then(data => { if (data.error) {