From 758d67e72ea3783c5903f4065b75a8732480edc0 Mon Sep 17 00:00:00 2001 From: jwinterm Date: Wed, 14 Jan 2026 08:17:47 -0500 Subject: [PATCH] fix: table lookup and move some messages to debug mode --- src/index.js | 1 + src/network/broadcastManager.js | 11 +++++++++-- src/network/socketHandlers.js | 20 ++++++++------------ 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/src/index.js b/src/index.js index c80dd2e..a2fb512 100644 --- a/src/index.js +++ b/src/index.js @@ -33,6 +33,7 @@ process.env.GAME_MODE = paymentConfigManager.getLegacyGameMode(); // Initialize modular components first const broadcastManager = new BroadcastManager(io); const debugManager = new DebugManager(broadcastManager); +broadcastManager.setDebugManager(debugManager); // Initialize payment system components (debugManager is now available) const databaseManager = new DatabaseManager(); diff --git a/src/network/broadcastManager.js b/src/network/broadcastManager.js index f3db127..94e7ec3 100644 --- a/src/network/broadcastManager.js +++ b/src/network/broadcastManager.js @@ -5,12 +5,17 @@ */ class BroadcastManager { - constructor(io) { + constructor(io, debugManager = null) { this.io = io; + this.debugManager = debugManager; this._lastBroadcastBlock = null; this._lastUserCount = -1; } + setDebugManager(debugManager) { + this.debugManager = debugManager; + } + // ====== GLOBAL BROADCASTS (All Clients) ====== /** @@ -39,7 +44,9 @@ class BroadcastManager { broadcastBlockHeight(blockHeight) { // Only log when the height actually changes to avoid per-client spam if (blockHeight !== this._lastBroadcastBlock) { - console.log(`📡 Broadcasting block height ${blockHeight} to all clients`); + if (this.debugManager?.CONSOLE_LOGGING) { + console.log(`📡 Broadcasting block height ${blockHeight} to all clients`); + } this._lastBroadcastBlock = blockHeight; } this.io.emit('blockheight', { blockHeight }); diff --git a/src/network/socketHandlers.js b/src/network/socketHandlers.js index b784f26..e02fd4e 100644 --- a/src/network/socketHandlers.js +++ b/src/network/socketHandlers.js @@ -499,11 +499,8 @@ class SocketHandlers { const payoutEligible = (this.gameModeManager.gameMode === 'PAID_SINGLE') || (this.gameModeManager.gameMode === 'PAID_CREDITS' && this.gameModeManager.creditsPayoutEnabled); if (payoutEligible) { try { - // Use session cache first (populated during connection/resume), then fall back to DB - let dbUser = this.sessionManager ? await this.sessionManager.getBySocket(socket.id) : null; - if (!dbUser) { - dbUser = await this.gameModeManager.getOrCreateUser(socket.id); - } + // Always do fresh DB lookup for payout address (cache may be stale after address update) + const dbUser = await this.gameModeManager.getOrCreateUser(socket.id); if (!dbUser.payout_address) { this.broadcastManager.sendStatusUpdate(socket.id, 'payment', '⚠️ Use the "Manage Payout Address" button or paste your payout address here and type confirm. Payment request will appear automatically.'); return; @@ -813,8 +810,7 @@ class SocketHandlers { try { // Query for pending (unpaid) payment requests for this user const pendingResult = await this.gameModeManager.db.query(` - SELECT id, address, expected_amount, payment_type, description, expires_at, - crypto_type + SELECT id, subaddress, expected_amount, payment_type, description, expires_at FROM payments WHERE user_id = $1 AND status = 'pending' @@ -832,7 +828,7 @@ class SocketHandlers { } const payment = pendingResult.rows[0]; - const cryptoType = payment.crypto_type || this.gameModeManager.cryptoType; + const cryptoType = this.gameModeManager.cryptoType; const formattedAmount = this.gameModeManager.formatAtomicHuman ? this.gameModeManager.formatAtomicHuman(payment.expected_amount, 3) : payment.expected_amount; @@ -842,7 +838,7 @@ class SocketHandlers { try { const { generatePaymentQR } = require('../payments/qrService'); qrDataUrl = await generatePaymentQR( - payment.address, + payment.subaddress, payment.expected_amount, cryptoType, payment.description || 'Restored payment', @@ -855,7 +851,7 @@ class SocketHandlers { // Re-emit payment_created to the client socket.emit('payment_created', { paymentId: payment.id, - address: payment.address, + address: payment.subaddress, amount: payment.expected_amount, amountFormatted: formattedAmount, humanAmount: formattedAmount, @@ -873,7 +869,7 @@ class SocketHandlers { // Create a mock paymentRequest object for _monitorAddress const paymentRequest = { id: payment.id, - address: payment.address, + address: payment.subaddress, amount: payment.expected_amount, amountFormatted: formattedAmount, package: null @@ -899,7 +895,7 @@ class SocketHandlers { this.broadcastManager.sendStatusUpdate( socket.id, 'payment', - `🔁 Restored pending payment request.\n\nAmount: ${formattedAmount} ${cryptoType}\nAddress: ${payment.address}` + `🔁 Restored pending payment request.\n\nAmount: ${formattedAmount} ${cryptoType}\nAddress: ${payment.subaddress}` ); if (this.debugManager.CONSOLE_LOGGING) {