Skip to content

Commit cd8dcce

Browse files
committed
send direct
1 parent 96ee222 commit cd8dcce

1 file changed

Lines changed: 14 additions & 18 deletions

File tree

webapp/src/components/CoachBuilder/AvatarUpload.jsx

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import React, { useState } from 'react';
2-
import { supabase } from '../../main';
2+
// No storage dependency; we send base64 directly to the generator
33
import { useNavigate } from 'react-router-dom';
44
import { useCoachBuilder } from '../../contexts/CoachBuilderContext';
55
import ProgressStepper from './components/ProgressStepper';
@@ -97,21 +97,16 @@ const AvatarUpload = () => {
9797

9898
try {
9999
// Create form data
100-
// 1) Upload selfie to Supabase public bucket to obtain a stable URL
101-
const fileExt = selectedFile.name.split('.').pop();
102-
const safeName = selectedFile.name.replace(/[^a-zA-Z0-9._-]/g, '_');
103-
const storagePath = `temp-avatars/${Date.now()}-${safeName}`;
104-
const { error: uploadError } = await supabase.storage
105-
.from('coach-avatars')
106-
.upload(storagePath, selectedFile, { upsert: true, contentType: selectedFile.type });
107-
if (uploadError) throw uploadError;
108-
109-
const { data: publicData } = supabase.storage
110-
.from('coach-avatars')
111-
.getPublicUrl(storagePath);
112-
const selfieUrl = publicData.publicUrl;
113-
114-
// 2) Call avatar generation via JSON (robust path)
100+
// 1) Read file as base64 (robust JSON-only path)
101+
const toBase64 = (file) => new Promise((resolve, reject) => {
102+
const reader = new FileReader();
103+
reader.onload = () => resolve(reader.result);
104+
reader.onerror = reject;
105+
reader.readAsDataURL(file);
106+
});
107+
const selfieBase64 = await toBase64(selectedFile);
108+
109+
// 2) Call avatar generation via JSON
115110
const generatorUrl =
116111
import.meta.env.VITE_COACH_AVATAR_GENERATOR_URL ||
117112
`${import.meta.env.VITE_API_URL}/coach-avatar-generator`;
@@ -121,7 +116,8 @@ const AvatarUpload = () => {
121116
headers: { 'Content-Type': 'application/json' },
122117
body: JSON.stringify({
123118
coachId: coachData.tempCoachId || `temp-${Date.now()}`,
124-
selfie_url: selfieUrl,
119+
selfie_base64: selfieBase64,
120+
selfie_mime: selectedFile.type,
125121
style,
126122
prompt
127123
})
@@ -153,7 +149,7 @@ const AvatarUpload = () => {
153149
updateAvatar({
154150
generatedAvatars: result.avatars,
155151
selectedAvatar: result.avatars[0],
156-
originalSelfieUrl: selfieUrl,
152+
originalSelfieUrl: selfieBase64,
157153
tempCoachId: coachData.tempCoachId || `temp-${Date.now()}`
158154
});
159155

0 commit comments

Comments
 (0)