import { NextResponse } from "next/server"; import { db } from "@link-stack/bridge-common"; import { Configuration, DevicesApi } from "@link-stack/signal-api"; // import { revalidatePath } from "next/cache"; import { Service, ServiceParams } from "./service"; const fetchNoCache = async (url: string, options = {}) => { // @ts-ignore options.cache = options.cache || "no-store"; return fetch(url, options); }; export class Signal extends Service { async getBot({ params }: ServiceParams) { const { token } = await params; const row = await db .selectFrom("SignalBot") .selectAll() .where("token", "=", token as string) .executeTakeFirstOrThrow(); const { name } = row; if (!row.verified) { const config = new Configuration({ basePath: process.env.BRIDGE_SIGNAL_URL, fetchApi: fetchNoCache, }); const devicesClient = new DevicesApi(config); const blob: Blob = await devicesClient.v1QrcodelinkGet({ deviceName: name.replaceAll(" ", "_"), }); const arrayBuffer = await blob.arrayBuffer(); const buffer = Buffer.from(arrayBuffer); const qrString = buffer.toString("base64"); const qr = `data:${blob.type};base64,${qrString}`; const finalRow = { ...row, qr, }; return NextResponse.json(finalRow); } else { return NextResponse.json(row); } } }