feat: trvalé zobrazení QR kódu do ručního zavření (#31)

QR kódy pro platbu za pizza day jsou nyní zobrazeny persistentně
i po následující dny, dokud uživatel nepotvrdí platbu tlačítkem
"Zaplatil jsem". Nevyřízené QR kódy jsou uloženy per-user v storage
a zobrazeny v sekci "Nevyřízené platby".
This commit is contained in:
2026-02-04 17:11:45 +01:00
parent d366ac39d4
commit b8629afef2
4 changed files with 101 additions and 7 deletions

View File

@@ -5,8 +5,9 @@ import { getData, getDateForWeekIndex, getToday } from "./service";
import dotenv from 'dotenv';
import path from 'path';
import { getQr } from "./qr";
import { generateToken, verify } from "./auth";
import { getIsWeekend, InsufficientPermissions } from "./utils";
import { generateToken, getLogin, verify } from "./auth";
import { getIsWeekend, InsufficientPermissions, parseToken } from "./utils";
import { getPendingQrs } from "./pizza";
import { initWebsocket } from "./websocket";
import pizzaDayRoutes from "./routes/pizzaDayRoutes";
import foodRoutes, { refreshMetoda } from "./routes/foodRoutes";
@@ -138,7 +139,18 @@ app.get("/api/data", async (req, res) => {
// Na víkendu zobrazíme pátek místo hlášky "Užívejte víkend"
date = getDateForWeekIndex(4);
}
res.status(200).json(await getData(date));
const data = await getData(date);
// Připojíme nevyřízené QR kódy pro přihlášeného uživatele
try {
const login = getLogin(parseToken(req));
const pendingQrs = await getPendingQrs(login);
if (pendingQrs.length > 0) {
data.pendingQrs = pendingQrs;
}
} catch {
// Token nemusí být validní, ignorujeme
}
res.status(200).json(data);
});
// Ostatní routes