Spaces:
Running
Running
Pulastya B commited on
Commit ·
f1c3962
1
Parent(s): 14fafaa
Finally the Supabase error has been solved now fixing the issue of not being able to write to huggingface- attempt 2
Browse files- FRRONTEEEND/lib/supabase.ts +46 -23
FRRONTEEEND/lib/supabase.ts
CHANGED
|
@@ -275,6 +275,14 @@ export const getUserProfile = async (userId: string) => {
|
|
| 275 |
}
|
| 276 |
};
|
| 277 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 278 |
// Update HuggingFace token for a user (only updates existing profiles)
|
| 279 |
export const updateHuggingFaceToken = async (userId: string, hfToken: string, hfUsername?: string) => {
|
| 280 |
console.log('[HF Token] Starting update for user:', userId);
|
|
@@ -286,21 +294,21 @@ export const updateHuggingFaceToken = async (userId: string, hfToken: string, hf
|
|
| 286 |
}
|
| 287 |
|
| 288 |
try {
|
| 289 |
-
// Check if user is authenticated in Supabase
|
| 290 |
-
|
| 291 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 292 |
|
| 293 |
if (!session) {
|
| 294 |
console.error('[HF Token] No active Supabase session! RLS will block the query.');
|
| 295 |
-
console.error('[HF Token] User needs to be logged in via Supabase auth.');
|
| 296 |
return null;
|
| 297 |
}
|
| 298 |
|
| 299 |
-
|
| 300 |
-
console.warn('[HF Token] Session user ID mismatch:', session.user.id, '!=', userId);
|
| 301 |
-
}
|
| 302 |
-
|
| 303 |
-
console.log('[HF Token] Attempting update with authenticated session...');
|
| 304 |
|
| 305 |
const updateData = {
|
| 306 |
huggingface_token: hfToken || null,
|
|
@@ -309,10 +317,14 @@ export const updateHuggingFaceToken = async (userId: string, hfToken: string, hf
|
|
| 309 |
};
|
| 310 |
console.log('[HF Token] Update payload:', { ...updateData, huggingface_token: hfToken ? '****' : null });
|
| 311 |
|
| 312 |
-
const { error
|
| 313 |
-
|
| 314 |
-
|
| 315 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 316 |
|
| 317 |
if (error) {
|
| 318 |
console.error('[HF Token] Update failed:', error.message, error.code, error.hint);
|
|
@@ -322,7 +334,7 @@ export const updateHuggingFaceToken = async (userId: string, hfToken: string, hf
|
|
| 322 |
console.log('[HF Token] Update successful!');
|
| 323 |
return { ...updateData, user_id: userId };
|
| 324 |
} catch (err: any) {
|
| 325 |
-
console.error('[HF Token]
|
| 326 |
return null;
|
| 327 |
}
|
| 328 |
};
|
|
@@ -332,18 +344,29 @@ export const getHuggingFaceStatus = async (userId: string) => {
|
|
| 332 |
console.log('[HF Status] Checking HF connection for user:', userId);
|
| 333 |
|
| 334 |
try {
|
| 335 |
-
// Check if user is authenticated
|
| 336 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 337 |
if (!session) {
|
| 338 |
console.log('[HF Status] No session, returning not connected');
|
| 339 |
return { connected: false };
|
| 340 |
}
|
|
|
|
| 341 |
|
| 342 |
-
const { data, error } = await
|
| 343 |
-
|
| 344 |
-
|
| 345 |
-
|
| 346 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 347 |
|
| 348 |
if (error) {
|
| 349 |
console.error('[HF Status] Query error:', error.message);
|
|
@@ -358,8 +381,8 @@ export const getHuggingFaceStatus = async (userId: string) => {
|
|
| 358 |
|
| 359 |
console.log('[HF Status] Result:', result.connected ? `Connected as ${result.username}` : 'Not connected');
|
| 360 |
return result;
|
| 361 |
-
} catch (err) {
|
| 362 |
-
console.error('[HF Status]
|
| 363 |
return { connected: false };
|
| 364 |
}
|
| 365 |
};
|
|
|
|
| 275 |
}
|
| 276 |
};
|
| 277 |
|
| 278 |
+
// Helper function to add timeout to any promise
|
| 279 |
+
const withTimeout = <T>(promise: Promise<T>, ms: number, errorMsg: string): Promise<T> => {
|
| 280 |
+
const timeout = new Promise<never>((_, reject) =>
|
| 281 |
+
setTimeout(() => reject(new Error(errorMsg)), ms)
|
| 282 |
+
);
|
| 283 |
+
return Promise.race([promise, timeout]);
|
| 284 |
+
};
|
| 285 |
+
|
| 286 |
// Update HuggingFace token for a user (only updates existing profiles)
|
| 287 |
export const updateHuggingFaceToken = async (userId: string, hfToken: string, hfUsername?: string) => {
|
| 288 |
console.log('[HF Token] Starting update for user:', userId);
|
|
|
|
| 294 |
}
|
| 295 |
|
| 296 |
try {
|
| 297 |
+
// Check if user is authenticated in Supabase (with timeout)
|
| 298 |
+
console.log('[HF Token] Getting session...');
|
| 299 |
+
const { data: { session } } = await withTimeout(
|
| 300 |
+
supabase.auth.getSession(),
|
| 301 |
+
5000,
|
| 302 |
+
'Session check timeout'
|
| 303 |
+
);
|
| 304 |
+
console.log('[HF Token] Session:', session ? `User: ${session.user.id}` : 'NO SESSION');
|
| 305 |
|
| 306 |
if (!session) {
|
| 307 |
console.error('[HF Token] No active Supabase session! RLS will block the query.');
|
|
|
|
| 308 |
return null;
|
| 309 |
}
|
| 310 |
|
| 311 |
+
console.log('[HF Token] Attempting update...');
|
|
|
|
|
|
|
|
|
|
|
|
|
| 312 |
|
| 313 |
const updateData = {
|
| 314 |
huggingface_token: hfToken || null,
|
|
|
|
| 317 |
};
|
| 318 |
console.log('[HF Token] Update payload:', { ...updateData, huggingface_token: hfToken ? '****' : null });
|
| 319 |
|
| 320 |
+
const { error } = await withTimeout(
|
| 321 |
+
supabase
|
| 322 |
+
.from('user_profiles')
|
| 323 |
+
.update(updateData)
|
| 324 |
+
.eq('user_id', userId),
|
| 325 |
+
8000,
|
| 326 |
+
'Update query timeout'
|
| 327 |
+
);
|
| 328 |
|
| 329 |
if (error) {
|
| 330 |
console.error('[HF Token] Update failed:', error.message, error.code, error.hint);
|
|
|
|
| 334 |
console.log('[HF Token] Update successful!');
|
| 335 |
return { ...updateData, user_id: userId };
|
| 336 |
} catch (err: any) {
|
| 337 |
+
console.error('[HF Token] Error:', err?.message || err);
|
| 338 |
return null;
|
| 339 |
}
|
| 340 |
};
|
|
|
|
| 344 |
console.log('[HF Status] Checking HF connection for user:', userId);
|
| 345 |
|
| 346 |
try {
|
| 347 |
+
// Check if user is authenticated (with timeout)
|
| 348 |
+
console.log('[HF Status] Getting session...');
|
| 349 |
+
const { data: { session } } = await withTimeout(
|
| 350 |
+
supabase.auth.getSession(),
|
| 351 |
+
5000,
|
| 352 |
+
'Session check timeout'
|
| 353 |
+
);
|
| 354 |
+
|
| 355 |
if (!session) {
|
| 356 |
console.log('[HF Status] No session, returning not connected');
|
| 357 |
return { connected: false };
|
| 358 |
}
|
| 359 |
+
console.log('[HF Status] Session found, querying profile...');
|
| 360 |
|
| 361 |
+
const { data, error } = await withTimeout(
|
| 362 |
+
supabase
|
| 363 |
+
.from('user_profiles')
|
| 364 |
+
.select('huggingface_token, huggingface_username')
|
| 365 |
+
.eq('user_id', userId)
|
| 366 |
+
.single(),
|
| 367 |
+
5000,
|
| 368 |
+
'Profile query timeout'
|
| 369 |
+
);
|
| 370 |
|
| 371 |
if (error) {
|
| 372 |
console.error('[HF Status] Query error:', error.message);
|
|
|
|
| 381 |
|
| 382 |
console.log('[HF Status] Result:', result.connected ? `Connected as ${result.username}` : 'Not connected');
|
| 383 |
return result;
|
| 384 |
+
} catch (err: any) {
|
| 385 |
+
console.error('[HF Status] Error:', err?.message || err);
|
| 386 |
return { connected: false };
|
| 387 |
}
|
| 388 |
};
|