From dd29264b0e98a7be6e28c45d9b40098a6c661970 Mon Sep 17 00:00:00 2001 From: Lucas Jeffrey Date: Tue, 27 May 2025 20:26:30 -0300 Subject: [PATCH 1/5] Reduce the size of the images within the QR of the invoice #641 --- .env-sample | 3 ++- util/index.ts | 9 +++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/.env-sample b/.env-sample index cd274919..6233678b 100644 --- a/.env-sample +++ b/.env-sample @@ -82,10 +82,11 @@ RELAYS='ws://localhost:7000,ws://localhost:8000,ws://localhost:9000' # Seconds to wait to allow disputes to be started DISPUTE_START_WINDOW=600 +#The relative size of the random image when compared to the qr (as a ratio of imageWidth/qrWidth) +IMAGE_TO_QR_RATIO=0.2 # Probability of golden honey badger appearance (1 in X orders) GOLDEN_HONEY_BADGER_PROBABILITY=100 # Number of notification messages sent to the admin, informing them of lack of solvers before disabling the community. The admin receives `MAX_ADMIN_WARNINGS_BEFORE_DEACTIVATION - 1` notification messages. MAX_ADMIN_WARNINGS_BEFORE_DEACTIVATION=10 - diff --git a/util/index.ts b/util/index.ts index 5f2ef6c9..b26f2916 100644 --- a/util/index.ts +++ b/util/index.ts @@ -14,8 +14,8 @@ const fs = require('fs').promises; const path = require('path'); const { I18n } = require('@grammyjs/i18n'); -const QRCode = require('qrcode'); -const { Image, createCanvas } = require('canvas'); +import QRCode from "qrcode"; +import { Image, createCanvas } from 'canvas'; // ISO 639-1 language codes const languages: ILanguages = languagesJson; @@ -619,7 +619,8 @@ const generateQRWithImage = async (request, randomImage) => { const centerImage = new Image(); centerImage.src = `data:image/png;base64,${randomImage}`; - const imageSize = canvas.width * 0.3; + const imageToQrRatio = parseFloat(process.env.IMAGE_TO_QR_RATIO?? '0.2'); + const imageSize = canvas.width * imageToQrRatio; const imagePos = (canvas.width - imageSize) / 2; ctx.drawImage(centerImage, imagePos, imagePos, imageSize, imageSize); @@ -660,4 +661,4 @@ export { isOrderCreator, generateRandomImage, generateQRWithImage, -}; +}; \ No newline at end of file From adb2f7122831d9344026bc530cd49377bf2db695 Mon Sep 17 00:00:00 2001 From: Lucas Jeffrey Date: Tue, 27 May 2025 20:39:49 -0300 Subject: [PATCH 2/5] Add validation to IMAGE_TO_QR_RATIO #641 --- util/index.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/util/index.ts b/util/index.ts index b26f2916..bfb2759f 100644 --- a/util/index.ts +++ b/util/index.ts @@ -619,7 +619,15 @@ const generateQRWithImage = async (request, randomImage) => { const centerImage = new Image(); centerImage.src = `data:image/png;base64,${randomImage}`; - const imageToQrRatio = parseFloat(process.env.IMAGE_TO_QR_RATIO?? '0.2'); + const rawRatio = process.env.IMAGE_TO_QR_RATIO ?? '0.2'; + let imageToQrRatio = parseFloat(rawRatio); + + // Validate ratio is a valid number between 0.1 and 0.5 + if (isNaN(imageToQrRatio) || imageToQrRatio < 0.1 || imageToQrRatio > 0.5) { + logger.warn(`Invalid IMAGE_TO_QR_RATIO value: ${rawRatio}, using default 0.2`); + imageToQrRatio = 0.2; + } + const imageSize = canvas.width * imageToQrRatio; const imagePos = (canvas.width - imageSize) / 2; From e0fe3cb5172281a3add4d5305bfe7207adfbb961 Mon Sep 17 00:00:00 2001 From: Lucas Jeffrey Date: Fri, 13 Jun 2025 23:05:48 -0300 Subject: [PATCH 3/5] Use logger.warning instead of logger.warn #641 --- util/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/util/index.ts b/util/index.ts index bfb2759f..0d0e3434 100644 --- a/util/index.ts +++ b/util/index.ts @@ -624,7 +624,7 @@ const generateQRWithImage = async (request, randomImage) => { // Validate ratio is a valid number between 0.1 and 0.5 if (isNaN(imageToQrRatio) || imageToQrRatio < 0.1 || imageToQrRatio > 0.5) { - logger.warn(`Invalid IMAGE_TO_QR_RATIO value: ${rawRatio}, using default 0.2`); + logger.warning(`Invalid IMAGE_TO_QR_RATIO value: ${rawRatio}, using default 0.2`); imageToQrRatio = 0.2; } From cf445c383a791a6fb71e1f435c65599e90f187c9 Mon Sep 17 00:00:00 2001 From: Lucas Jeffrey Date: Wed, 18 Jun 2025 19:55:18 -0300 Subject: [PATCH 4/5] The imports should be before any other declaration Issue: #641 --- util/index.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/util/index.ts b/util/index.ts index 0d0e3434..d00c39c4 100644 --- a/util/index.ts +++ b/util/index.ts @@ -10,12 +10,12 @@ import fiatJson from './fiat.json'; import languagesJson from './languages.json'; import { Order, Community } from "../models"; import { logger } from "../logger"; -const fs = require('fs').promises; +import QRCode from "qrcode"; +import { Image, createCanvas } from 'canvas';const fs = require('fs').promises; + const path = require('path'); const { I18n } = require('@grammyjs/i18n'); -import QRCode from "qrcode"; -import { Image, createCanvas } from 'canvas'; // ISO 639-1 language codes const languages: ILanguages = languagesJson; From 6fd2135545afe6b444245d88f0e96129f17558cd Mon Sep 17 00:00:00 2001 From: Lucas Jeffrey Date: Wed, 18 Jun 2025 19:56:42 -0300 Subject: [PATCH 5/5] Minor changes to respect coding style Issue: #641 --- util/index.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/util/index.ts b/util/index.ts index d00c39c4..8f467e9b 100644 --- a/util/index.ts +++ b/util/index.ts @@ -11,8 +11,9 @@ import languagesJson from './languages.json'; import { Order, Community } from "../models"; import { logger } from "../logger"; import QRCode from "qrcode"; -import { Image, createCanvas } from 'canvas';const fs = require('fs').promises; +import { Image, createCanvas } from 'canvas'; +const fs = require('fs').promises; const path = require('path'); const { I18n } = require('@grammyjs/i18n');