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
Files changed (1) hide show
  1. 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
- const { data: { session }, error: sessionError } = await supabase.auth.getSession();
291
- console.log('[HF Token] Current session:', session ? `User: ${session.user.id}` : 'NO SESSION');
 
 
 
 
 
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
- if (session.user.id !== userId) {
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, count } = await supabase
313
- .from('user_profiles')
314
- .update(updateData)
315
- .eq('user_id', userId);
 
 
 
 
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] Unexpected error:', err?.message || err);
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
- const { data: { session } } = await supabase.auth.getSession();
 
 
 
 
 
 
337
  if (!session) {
338
  console.log('[HF Status] No session, returning not connected');
339
  return { connected: false };
340
  }
 
341
 
342
- const { data, error } = await supabase
343
- .from('user_profiles')
344
- .select('huggingface_token, huggingface_username')
345
- .eq('user_id', userId)
346
- .single();
 
 
 
 
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] Unexpected error:', err);
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
  };