11import React , { useState } from 'react' ;
2- import { supabase } from '../../main' ;
2+ // No storage dependency; we send base64 directly to the generator
33import { useNavigate } from 'react-router-dom' ;
44import { useCoachBuilder } from '../../contexts/CoachBuilderContext' ;
55import 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 - z A - Z 0 - 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