fix: qr base64 > qr uri

This commit is contained in:
nate 2026-03-19 12:46:03 +04:00
parent ae9c18b771
commit 7ba11614e7
2 changed files with 15 additions and 5 deletions

View File

@ -25,8 +25,18 @@ export async function getAddressInfoBulk(addresses: string[]): Promise<Record<st
return res.json();
}
export function getQrUrl(text: string): string {
return `${API}/invoice/qr/${encodeURIComponent(text)}`;
export async function fetchQrBase64(text: string): Promise<string> {
const url = `${API}/invoice/qr/${encodeURIComponent(text)}`;
try {
const res = await fetch(url);
if (!res.ok) return url;
const buf = await res.arrayBuffer();
const type = res.headers.get("content-type") || "image/png";
const b64 = Buffer.from(buf).toString("base64");
return `data:${type};base64,${b64}`;
} catch {
return url;
}
}
export async function getAvailableCoins(): Promise<string[]> {

View File

@ -1,7 +1,7 @@
import { Elysia, t } from "elysia";
import sql from "./db";
import { derive } from "./address";
import { getExchangeRates, getAvailableCoins, getQrUrl } from "./freedom";
import { getExchangeRates, getAvailableCoins, fetchQrBase64 } from "./freedom";
import { PLANS, COINS } from "./plans";
import { watchPayment } from "./monitor";
@ -121,7 +121,7 @@ export const routes = new Elysia()
status: payment.status,
expires_at: payment.expires_at,
txs: [],
qr_url: getQrUrl(uri),
qr_url: await fetchQrBase64(uri),
coin_label: coinInfo.label,
coin_ticker: coinInfo.ticker,
};
@ -170,7 +170,7 @@ export const routes = new Elysia()
expires_at: payment.expires_at,
paid_at: payment.paid_at,
txs: txs.map((t: any) => ({ txid: t.txid, amount: t.amount, confirmed: t.confirmed, detected_at: t.detected_at })),
qr_url: getQrUrl(uri),
qr_url: await fetchQrBase64(uri),
coin_label: coinInfo?.label,
coin_ticker: coinInfo?.ticker,
};