fix mini app bot father
This commit is contained in:
37
apps/frontend/hooks/use-mini-app-auth.ts
Normal file
37
apps/frontend/hooks/use-mini-app-auth.ts
Normal file
@@ -0,0 +1,37 @@
|
||||
'use client';
|
||||
|
||||
import { useEffect, useState } from 'react';
|
||||
import { useAuth } from '@/components/id/auth-provider';
|
||||
import { useEmbeddedAuthFallback } from '@/lib/embedded-auth-bridge';
|
||||
|
||||
const EMBEDDED_AUTH_WAIT_MS = 4000;
|
||||
|
||||
export function useMiniAppAuth() {
|
||||
const { token, isPinLocked, isLoading } = useAuth();
|
||||
const embeddedToken = useEmbeddedAuthFallback();
|
||||
const isEmbedded = typeof window !== 'undefined' && window.parent !== window;
|
||||
const [bridgeTimedOut, setBridgeTimedOut] = useState(false);
|
||||
|
||||
useEffect(() => {
|
||||
if (!isEmbedded) {
|
||||
setBridgeTimedOut(true);
|
||||
return;
|
||||
}
|
||||
const timer = window.setTimeout(() => setBridgeTimedOut(true), EMBEDDED_AUTH_WAIT_MS);
|
||||
return () => window.clearTimeout(timer);
|
||||
}, [isEmbedded]);
|
||||
|
||||
const effectiveToken = token ?? embeddedToken;
|
||||
const waitingForBridge = isEmbedded && !effectiveToken && !bridgeTimedOut;
|
||||
const authReady = !isEmbedded || Boolean(effectiveToken) || bridgeTimedOut || !isLoading;
|
||||
const canUse = Boolean(effectiveToken && (!isPinLocked || Boolean(embeddedToken)));
|
||||
|
||||
return {
|
||||
effectiveToken,
|
||||
canUse,
|
||||
authReady,
|
||||
waitingForBridge,
|
||||
isEmbedded,
|
||||
isLoading
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user