Amba-Agent-App/lib/services/userQrService.ts
2026-01-16 00:22:35 +03:00

65 lines
1.5 KiB
TypeScript

import { doc } from "../firebase";
export interface ProfileQrPayload {
type: "AMBA_PROFILE";
version: 1;
accountId: string;
name: string;
phoneNumber: string;
}
export class UserQrService {
static async getOrCreateProfileQr(params: {
uid: string;
accountId: string;
name: string;
phoneNumber: string;
}): Promise<string> {
const { uid, accountId, name, phoneNumber } = params;
try {
const userRef = doc("users", uid);
const snap = await userRef.get();
const data = snap?.data ? snap.data() : undefined;
const existingQr: unknown = data?.qrCode;
if (typeof existingQr === "string" && existingQr.length > 0) {
return existingQr;
}
const payload: ProfileQrPayload = {
type: "AMBA_PROFILE",
version: 1,
accountId,
name,
phoneNumber,
};
const payloadString = JSON.stringify(payload);
try {
await userRef.update({ qrCode: payloadString });
} catch (error) {
console.warn(
"[UserQrService] Failed to persist qrCode field for user",
uid,
error
);
}
return payloadString;
} catch (error) {
console.error("[UserQrService] getOrCreateProfileQr error", error);
const fallback: ProfileQrPayload = {
type: "AMBA_PROFILE",
version: 1,
accountId: params.accountId,
name: params.name,
phoneNumber: params.phoneNumber,
};
return JSON.stringify(fallback);
}
}
}
export default UserQrService;