diff --git a/app/api/generate/guest/route.ts b/app/api/generate/guest/route.ts index 16953c5..5c767cb 100644 --- a/app/api/generate/guest/route.ts +++ b/app/api/generate/guest/route.ts @@ -86,6 +86,9 @@ export async function POST(req: NextRequest) { const sessionId = `guest_${Date.now()}_${Math.random().toString(36).slice(2, 8)}` + // Store a reference instead of full base64 data URIs (which bloat Supabase and cause timeouts) + const storableUrl = imageUrl.startsWith('data:') ? `generated:${genData.id || sessionId}` : imageUrl + // Log to Supabase (non-blocking) if (SUPABASE_URL && SUPABASE_ANON) { fetch(`${SUPABASE_URL}/rest/v1/guest_generations`, { @@ -101,14 +104,14 @@ export async function POST(req: NextRequest) { session_id: sessionId, target_url: url, style, - image_url: imageUrl, + image_url: storableUrl, email: email || null, created_at: new Date().toISOString(), }), }).catch(() => {}) - // Also upsert into qron_demos for the gallery - if (imageUrl) { + // Also upsert into qron_demos for the gallery (skip base64 data URIs) + if (storableUrl && !storableUrl.startsWith('generated:')) { fetch(`${SUPABASE_URL}/rest/v1/qron_demos`, { method: 'POST', headers: { diff --git a/app/api/generate/route.ts b/app/api/generate/route.ts index 0d90269..4535bef 100644 --- a/app/api/generate/route.ts +++ b/app/api/generate/route.ts @@ -100,10 +100,11 @@ export async function POST(request: Request) { ) const qronId = crypto.randomUUID() + const storableImageUrl = imageUrl.startsWith('data:') ? `generated:${qronId}` : imageUrl await admin.from('qron_generations').insert({ id: qronId, user_id: session.user.id, - image_url: imageUrl, + image_url: storableImageUrl, destination_url: targetUrl, prompt: finalPrompt, preset_id: presetId || null,