mirror of
https://github.com/pezkuwichain/pezkuwi-telegram-miniapp.git
synced 2026-04-22 01:57:56 +00:00
fix: add auth error display and fix retry button
This commit is contained in:
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "pezkuwi-telegram-miniapp",
|
||||
"version": "1.0.120",
|
||||
"version": "1.0.121",
|
||||
"type": "module",
|
||||
"description": "Pezkuwichain Telegram Mini App - Forum, Announcements, Rewards",
|
||||
"author": "Pezkuwichain Team",
|
||||
|
||||
@@ -7,6 +7,7 @@ interface AuthContextType {
|
||||
sessionToken: string | null;
|
||||
isLoading: boolean;
|
||||
isAuthenticated: boolean;
|
||||
authError: string | null;
|
||||
signIn: () => Promise<void>;
|
||||
}
|
||||
|
||||
@@ -16,11 +17,15 @@ export function AuthProvider({ children }: { children: ReactNode }) {
|
||||
const [user, setUser] = useState<User | null>(null);
|
||||
const [sessionToken, setSessionToken] = useState<string | null>(null);
|
||||
const [isLoading, setIsLoading] = useState(true);
|
||||
const [authError, setAuthError] = useState<string | null>(null);
|
||||
|
||||
const signIn = async () => {
|
||||
const tg = window.Telegram?.WebApp;
|
||||
setAuthError(null);
|
||||
setIsLoading(true);
|
||||
|
||||
if (!tg?.initData) {
|
||||
setAuthError('No Telegram initData');
|
||||
setIsLoading(false);
|
||||
return;
|
||||
}
|
||||
@@ -29,13 +34,16 @@ export function AuthProvider({ children }: { children: ReactNode }) {
|
||||
const result = await signInWithTelegram(tg.initData);
|
||||
if (result?.user) {
|
||||
setUser(result.user);
|
||||
setAuthError(null);
|
||||
}
|
||||
// Store session token for P2P and other cross-app auth
|
||||
if (result?.session_token) {
|
||||
setSessionToken(result.session_token);
|
||||
}
|
||||
} catch (error) {
|
||||
// Auth failed silently - user will see unauthenticated state
|
||||
// Capture error message for debugging
|
||||
const errorMsg = error instanceof Error ? error.message : String(error);
|
||||
setAuthError(errorMsg);
|
||||
if (import.meta.env.DEV) {
|
||||
console.error('[Auth] Error:', error);
|
||||
}
|
||||
@@ -56,6 +64,7 @@ export function AuthProvider({ children }: { children: ReactNode }) {
|
||||
sessionToken,
|
||||
isLoading,
|
||||
isAuthenticated: !!user,
|
||||
authError,
|
||||
signIn,
|
||||
}}
|
||||
>
|
||||
|
||||
@@ -22,7 +22,7 @@ type UserScreen = 'create' | 'import' | null;
|
||||
|
||||
export function WalletSection() {
|
||||
const { isInitialized, isConnected, hasWallet, deleteWalletData } = useWallet();
|
||||
const { isAuthenticated, isLoading: authLoading, signIn } = useAuth();
|
||||
const { isAuthenticated, isLoading: authLoading, authError, signIn } = useAuth();
|
||||
const [userScreen, setUserScreen] = useState<UserScreen>(null);
|
||||
|
||||
// Derive screen from wallet state and user navigation
|
||||
@@ -80,17 +80,20 @@ export function WalletSection() {
|
||||
<AlertTriangle className="w-8 h-8 text-red-400" />
|
||||
</div>
|
||||
<div>
|
||||
<h2 className="text-xl font-semibold mb-2">Têketin Têk Çû</h2>
|
||||
<h2 className="text-xl font-semibold mb-2">Teketin Tek Cu</h2>
|
||||
<p className="text-muted-foreground text-sm">
|
||||
Ji kerema xwe piştrast bikin ku hûn vê app-ê di nav Telegram de vedikin
|
||||
Ji kerema xwe pistrast bikin ku hun ve app-e di nav Telegram de vedikin
|
||||
</p>
|
||||
{authError && (
|
||||
<p className="text-xs text-red-400 mt-2 font-mono break-all px-4">{authError}</p>
|
||||
)}
|
||||
</div>
|
||||
<button
|
||||
onClick={handleRetryAuth}
|
||||
className="px-6 py-3 bg-primary text-primary-foreground rounded-xl font-semibold flex items-center gap-2 mx-auto"
|
||||
>
|
||||
<RefreshCw className="w-4 h-4" />
|
||||
Dîsa Biceribîne
|
||||
Disa Biceribine
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
+3
-3
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"version": "1.0.120",
|
||||
"buildTime": "2026-02-06T01:55:02.762Z",
|
||||
"buildNumber": 1770342902762
|
||||
"version": "1.0.121",
|
||||
"buildTime": "2026-02-06T16:48:42.195Z",
|
||||
"buildNumber": 1770396522198
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user