23 lines
727 B
TypeScript
23 lines
727 B
TypeScript
import fsp from "node:fs/promises";
|
|
import path from "node:path";
|
|
import { resolvePreferredOpenClawTmpDir } from "openclaw/plugin-sdk/zalouser";
|
|
|
|
export async function writeQrDataUrlToTempFile(
|
|
qrDataUrl: string,
|
|
profile: string,
|
|
): Promise<string | null> {
|
|
const trimmed = qrDataUrl.trim();
|
|
const match = trimmed.match(/^data:image\/png;base64,(.+)$/i);
|
|
const base64 = (match?.[1] ?? "").trim();
|
|
if (!base64) {
|
|
return null;
|
|
}
|
|
const safeProfile = profile.replace(/[^a-zA-Z0-9_-]+/g, "-") || "default";
|
|
const filePath = path.join(
|
|
resolvePreferredOpenClawTmpDir(),
|
|
`openclaw-zalouser-qr-${safeProfile}.png`,
|
|
);
|
|
await fsp.writeFile(filePath, Buffer.from(base64, "base64"));
|
|
return filePath;
|
|
}
|