From 5c6a3f5e67316f90ca10c53c9f1edf50d611671c Mon Sep 17 00:00:00 2001 From: Kurdistan Tech Ministry Date: Sat, 7 Feb 2026 06:32:49 +0300 Subject: [PATCH] fix: show actual error message on reaction failure --- package.json | 2 +- src/contexts/AuthContext.tsx | 29 +------------- src/lib/supabase.ts | 72 ++++++++++++---------------------- src/sections/Announcements.tsx | 5 ++- src/version.json | 6 +-- 5 files changed, 34 insertions(+), 80 deletions(-) diff --git a/package.json b/package.json index e1f9e5f..821c2d5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "pezkuwi-telegram-miniapp", - "version": "1.0.152", + "version": "1.0.153", "type": "module", "description": "Pezkuwichain Telegram Mini App - Forum, Announcements, Rewards", "author": "Pezkuwichain Team", diff --git a/src/contexts/AuthContext.tsx b/src/contexts/AuthContext.tsx index 107f84a..e14fe52 100644 --- a/src/contexts/AuthContext.tsx +++ b/src/contexts/AuthContext.tsx @@ -22,24 +22,20 @@ interface AuthContextType { const AuthContext = createContext(null); // Wait for Telegram SDK to be ready with initData -// 25 attempts * 200ms = 5 seconds max wait function waitForInitData(maxAttempts = 25, intervalMs = 200): Promise { return new Promise((resolve) => { let attempts = 0; const check = () => { attempts++; - const tg = window.Telegram?.WebApp; - const initData = tg?.initData; + const initData = window.Telegram?.WebApp?.initData; if (initData && initData.length > 0) { - console.warn(`[Auth] initData found after ${attempts} attempts`); resolve(initData); return; } if (attempts >= maxAttempts) { - console.warn(`[Auth] initData not found after ${attempts} attempts`); resolve(null); return; } @@ -59,56 +55,33 @@ export function AuthProvider({ children }: { children: ReactNode }) { const authAttempted = useRef(false); const signIn = useCallback(async () => { - console.warn('[Auth] ========== signIn START =========='); - const tg = window.Telegram?.WebApp; - console.warn('[Auth] TG object:', tg ? 'exists' : 'MISSING'); - console.warn( - '[Auth] TG.initData direct check:', - tg?.initData ? tg.initData.length + ' chars' : 'EMPTY' - ); - setAuthError(null); setIsLoading(true); - // Wait for initData to be available (retry mechanism) - console.warn('[Auth] Calling waitForInitData...'); const initData = await waitForInitData(); - console.warn( - '[Auth] waitForInitData returned:', - initData ? initData.length + ' chars' : 'NULL' - ); if (!initData) { - console.warn('[Auth] No initData after waiting, setting error'); setAuthError('No Telegram initData'); setIsLoading(false); return; } - console.warn('[Auth] initData available, calling signInWithTelegram...'); - try { const result = await signInWithTelegram(initData); - console.warn('[Auth] signInWithTelegram SUCCESS:', JSON.stringify(result)); if (result?.user) { setUser(result.user); setAuthError(null); - console.warn('[Auth] User set:', result.user.first_name); } else { - console.warn('[Auth] No user in result'); setAuthError('No user returned from auth'); } if (result?.session_token) { setSessionToken(result.session_token); - console.warn('[Auth] Session token set'); } } catch (error) { const errorMsg = error instanceof Error ? error.message : String(error); - console.warn('[Auth] signInWithTelegram FAILED:', errorMsg); setAuthError(errorMsg); } finally { setIsLoading(false); - console.warn('[Auth] ========== signIn END =========='); } }, []); diff --git a/src/lib/supabase.ts b/src/lib/supabase.ts index 7e78129..ab4e436 100644 --- a/src/lib/supabase.ts +++ b/src/lib/supabase.ts @@ -7,62 +7,40 @@ export const supabase: SupabaseClient = createClient(env.SUPABASE_URL, env.SUPAB // Telegram auth helper - validates initData with Edge Function export async function signInWithTelegram(initData: string) { - console.warn('[signInWithTelegram] Called with initData:', initData.length, 'chars'); - if (!initData) { - console.warn('[signInWithTelegram] No initData provided!'); throw new Error('No Telegram initData provided'); } - console.warn('[signInWithTelegram] Calling supabase.functions.invoke...'); + const { data, error } = await supabase.functions.invoke('telegram-auth', { + body: { initData }, + }); - try { - const { data, error } = await supabase.functions.invoke('telegram-auth', { - body: { initData }, - }); - - console.warn('[signInWithTelegram] Response - data:', !!data, 'error:', !!error); - - if (error) { - let errorMessage = error.message || 'Unknown error'; - console.warn('[signInWithTelegram] Error object:', JSON.stringify(error)); - - if (error.context?.body) { - try { - const bodyError = JSON.parse(error.context.body); - if (bodyError.error) { - errorMessage = bodyError.error; - } - } catch { - if (typeof error.context.body === 'string') { - errorMessage = error.context.body; - } + if (error) { + let errorMessage = error.message || 'Unknown error'; + if (error.context?.body) { + try { + const bodyError = JSON.parse(error.context.body); + if (bodyError.error) { + errorMessage = bodyError.error; + } + } catch { + if (typeof error.context.body === 'string') { + errorMessage = error.context.body; } } - - console.warn('[signInWithTelegram] Final error message:', errorMessage); - throw new Error(errorMessage); } - - if (data?.error) { - console.warn('[signInWithTelegram] Data contains error:', data.error); - throw new Error(data.error); - } - - console.warn('[signInWithTelegram] Success, user:', data?.user?.first_name); - - if (data?.session) { - await supabase.auth.setSession(data.session); - } - - return data; - } catch (e) { - console.warn( - '[signInWithTelegram] Exception caught:', - e instanceof Error ? e.message : String(e) - ); - throw e; + throw new Error(errorMessage); } + + if (data?.error) { + throw new Error(data.error); + } + + if (data?.session) { + await supabase.auth.setSession(data.session); + } + + return data; } // Helper to get current session diff --git a/src/sections/Announcements.tsx b/src/sections/Announcements.tsx index ca324bd..684bd7a 100644 --- a/src/sections/Announcements.tsx +++ b/src/sections/Announcements.tsx @@ -29,7 +29,10 @@ export function AnnouncementsSection() { { announcementId: id, reaction }, { onSuccess: () => hapticNotification('success'), - onError: () => hapticNotification('error'), + onError: (err) => { + hapticNotification('error'); + window.Telegram?.WebApp?.showAlert(err.message || 'Çewtî'); + }, } ); }; diff --git a/src/version.json b/src/version.json index 98860e8..e3799f4 100644 --- a/src/version.json +++ b/src/version.json @@ -1,5 +1,5 @@ { - "version": "1.0.152", - "buildTime": "2026-02-07T03:21:34.655Z", - "buildNumber": 1770434494656 + "version": "1.0.153", + "buildTime": "2026-02-07T03:32:49.644Z", + "buildNumber": 1770435169644 }