import { directus } from './directus.js' const CODE_VALIDITY_MS = 10 * 60 * 1000 class VerificationService { generateCode() { const array = new Uint32Array(1) crypto.getRandomValues(array) const code = String(array[0] % 1000000).padStart(6, '0') const generatedAt = new Date() const expiresAt = new Date(generatedAt.getTime() + CODE_VALIDITY_MS) return { code, generatedAt, expiresAt } } isCodeValid(generatedAt) { return Date.now() - new Date(generatedAt).getTime() < CODE_VALIDITY_MS } getRemainingTime(generatedAt) { const elapsed = Date.now() - new Date(generatedAt).getTime() const remaining = Math.max(0, CODE_VALIDITY_MS - elapsed) return Math.ceil(remaining / 1000) } async verify(listingId, code, imageFile) { try { const uploaded = await directus.uploadFile(imageFile) await directus.patch('/items/listings/' + listingId, { verification_code: code, verification_image: uploaded.id, verification_date: new Date().toISOString(), verified: true }) return true } catch (e) { console.error('Verification failed:', e) return false } } isVerified(listing) { return listing.verified === true } } export const verificationService = new VerificationService()