From bd21801c41d5719bf5fb3fc5e11f59b4270bb909 Mon Sep 17 00:00:00 2001 From: seaznCode Date: Tue, 17 Mar 2026 18:59:24 +0100 Subject: [PATCH] refactor: remove local QR data URI caching and streamline QR code retrieval --- services/invoice/InvoiceService.js | 33 ++---------------------------- 1 file changed, 2 insertions(+), 31 deletions(-) diff --git a/services/invoice/InvoiceService.js b/services/invoice/InvoiceService.js index 998821c..cfbd226 100644 --- a/services/invoice/InvoiceService.js +++ b/services/invoice/InvoiceService.js @@ -16,7 +16,6 @@ const CompanySettingsRepository = require('../../repositories/settings/CompanySe class InvoiceService { constructor() { this.repo = new InvoiceRepository(); - this._qrDataUriCache = new Map(); } _inferImageMimeFromBase64(base64) { @@ -59,17 +58,12 @@ class InvoiceService { return null; } - _getLocalQrImagePath(pieceCount) { - const safePieceCount = pieceCount === 120 ? 120 : 60; - const fileName = safePieceCount === 120 ? 'qr_120.png' : 'qr_60.png'; - return path.resolve(__dirname, '../../templates/invoice/qr', fileName); - } - async _getCompanySettingsQrDataUri(pieceCount) { const safePieceCount = pieceCount === 120 ? 120 : 60; try { const repo = new CompanySettingsRepository(); const row = await repo.get(); + if (!row) return null; const raw = safePieceCount === 120 ? row?.qr_code_120_base64 : row?.qr_code_60_base64; const value = (raw == null) ? '' : String(raw).trim(); if (!value) return null; @@ -85,34 +79,11 @@ class InvoiceService { } } - async _getLocalQrDataUri(pieceCount) { - const safePieceCount = pieceCount === 120 ? 120 : 60; - - if (this._qrDataUriCache.has(safePieceCount)) { - return this._qrDataUriCache.get(safePieceCount); - } - - const filePath = this._getLocalQrImagePath(safePieceCount); - try { - const buffer = await fs.readFile(filePath); - const dataUri = `data:image/png;base64,${buffer.toString('base64')}`; - this._qrDataUriCache.set(safePieceCount, dataUri); - return dataUri; - } catch (e) { - logger.warn('InvoiceService._getLocalQrDataUri:missing_qr_file', { - pieceCount: safePieceCount, - filePath, - message: e?.message, - }); - return null; - } - } - async _buildQrCodeImageTag({ abonement }) { const pieceCount = this._resolvePieceCountForQr(abonement); if (!pieceCount) return ''; - const dataUri = await this._getCompanySettingsQrDataUri(pieceCount) || await this._getLocalQrDataUri(pieceCount); + const dataUri = await this._getCompanySettingsQrDataUri(pieceCount); if (!dataUri) return ''; return `QR Code`; -- 2.39.5