Files
ApiCore/ApiCore-Frontend/src/lib/qr/api.ts
T
Nick Szaunig 53b781aa04 feat: NFC-Tags beschreiben mit demselben Deep-Link wie der QR-Code
Neuer Endpunkt GET /api/v1/qr/:entityType/:id/link liefert den vom
QR-Dienst bereits genutzten Deep-Link als reine URL statt als SVG,
damit die Web-NFC-API (client-seitig, Chrome/Android) ihn per
NDEFReader.write() auf einen physischen NFC-Tag schreiben kann.
QrService.resolveUrl() ist aus generateSvg() herausgezogen, damit
beide Endpunkte exakt denselben Link erzeugen.

Der bestehende QrCodeDialog bekommt dadurch für alle sechs
QR-fähigen Entitäten (Völker, Bienenstände, Königinnen, Honigchargen,
Lagerbehälter, Abfüllungen) automatisch einen "Auf NFC-Tag
schreiben"-Button, der nur erscheint, wenn window.NDEFReader
tatsächlich existiert – kein Fallback für andere Browser oder iOS,
wie in der Lastenheft vorgesehen.
2026-08-25 01:50:14 +02:00

20 lines
596 B
TypeScript

import { apiFetch, apiFetchBlob } from "@/lib/auth/api-client";
export type QrEntityType =
| "colonies"
| "apiaries"
| "queens"
| "honey-batches"
| "storage-containers"
| "bottling-batches";
export async function fetchQrCodeSvg(entityType: QrEntityType, id: string): Promise<Blob> {
const { blob } = await apiFetchBlob(`/qr/${entityType}/${id}.svg`, `${entityType}.svg`);
return blob;
}
export async function fetchQrLink(entityType: QrEntityType, id: string): Promise<string> {
const { url } = await apiFetch<{ url: string }>(`/qr/${entityType}/${id}/link`);
return url;
}