Fix modal not showing

This commit is contained in:
Shreyaschorge 2025-07-11 19:35:09 +05:30
parent 8ff7080e84
commit c7583b2ffe
No known key found for this signature in database

View File

@ -423,9 +423,21 @@ export function NeynarAuthButton() {
if (message && signature) { if (message && signature) {
const handleSignerFlow = async () => { const handleSignerFlow = async () => {
try { try {
const clientContext = context?.client as Record<string, unknown>;
const isMobileContext =
clientContext?.platformType === 'mobile' &&
clientContext?.clientFid === FARCASTER_FID;
// Step 1: Change to loading state
setDialogStep('loading');
// Show dialog if not using backend flow or in browser farcaster
if ((useBackendFlow && !isMobileContext) || !useBackendFlow)
setShowDialog(true);
// First, fetch existing signers // First, fetch existing signers
const signers = await fetchAllSigners(message, signature); const signers = await fetchAllSigners(message, signature);
setSignersLoading(true); if (useBackendFlow && isMobileContext) setSignersLoading(true);
// Check if no signers exist or if we have empty signers // Check if no signers exist or if we have empty signers
if (!signers || signers.length === 0) { if (!signers || signers.length === 0) {
@ -439,40 +451,36 @@ export function NeynarAuthButton() {
); );
// Step 3: Show QR code in access dialog for signer approval // Step 3: Show QR code in access dialog for signer approval
if (signedKeyData.signer_approval_url) { setSignerApprovalUrl(signedKeyData.signer_approval_url);
setSignerApprovalUrl(signedKeyData.signer_approval_url);
// Check if we're in a mobile context
const clientContext = context?.client as Record<string, unknown>;
const isMobileContext =
clientContext?.platformType === 'mobile' &&
clientContext?.clientFid === FARCASTER_FID;
if (isMobileContext) { if (isMobileContext) {
setShowDialog(false); setShowDialog(false);
await sdk.actions.openUrl( await sdk.actions.openUrl(
signedKeyData.signer_approval_url.replace( signedKeyData.signer_approval_url.replace(
'https://client.farcaster.xyz/deeplinks/', 'https://client.farcaster.xyz/deeplinks/',
'farcaster://' 'farcaster://'
) )
); );
} else { } else {
setDialogStep('access'); setShowDialog(true); // Ensure dialog is shown during loading
setShowDialog(true); setDialogStep('access');
}
// Step 4: Start polling for signer approval
startPolling(newSigner.signer_uuid, message, signature);
} }
// Step 4: Start polling for signer approval
startPolling(newSigner.signer_uuid, message, signature);
} else { } else {
// If signers exist, close the dialog
setSignersLoading(false); setSignersLoading(false);
setShowDialog(false); setShowDialog(false);
setDialogStep('signin'); setDialogStep('signin');
} }
} catch (error) { } catch (error) {
console.error('❌ Error in signer flow:', error); console.error('❌ Error in signer flow:', error);
// On error, reset to signin step // On error, reset to signin step and hide dialog
setDialogStep('signin'); setDialogStep('signin');
setSignersLoading(false); setSignersLoading(false);
setShowDialog(false);
setSignerApprovalUrl(null);
} }
}; };
@ -485,6 +493,8 @@ export function NeynarAuthButton() {
createSigner, createSigner,
generateSignedKeyRequest, generateSignedKeyRequest,
startPolling, startPolling,
context,
useBackendFlow,
]); ]);
// Backend flow using NextAuth // Backend flow using NextAuth