Skip to content

Commit

Permalink
fix sign in
Browse files Browse the repository at this point in the history
  • Loading branch information
nickcherry committed Feb 1, 2024
1 parent bd607c8 commit c2852ae
Showing 1 changed file with 73 additions and 0 deletions.
73 changes: 73 additions & 0 deletions mobile/src/components/auth/Login.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
import {
AuthClientError,
StatusAPIResponse,
useSignIn,
} from '@farcaster/auth-kit';
import { useAuth } from '@mobile/contexts/AuthProvider';
import { useCallback, useEffect, useRef, useState } from 'react';
import { Linking, Pressable, Text, View } from 'react-native';

import { Loader } from '../loader/Loader';

export function Login() {
const { signIn } = useAuth();

const hasInitiatedConnectRef = useRef(false);
const hasStartedPollingRef = useRef(false);
const [isSigningIn, setIsSigningIn] = useState(false);

const {
connect,
isError: isConnectError,
reconnect,
signIn: startPolling,
url,
} = useSignIn({
onSuccess: useCallback(
(req: StatusAPIResponse) => {
signIn({
message: req.message!,
nonce: req.nonce!,
signature: req.signature!,
});
},
[signIn],
),
onError: useCallback((error: AuthClientError | undefined) => {
console.error(error);
}, []),
});

const initiateConnect = useCallback(async () => {
setIsSigningIn(true);

if (!hasInitiatedConnectRef.current) {
hasInitiatedConnectRef.current = true;
console.log('connecting');
await connect();
} else if (isConnectError) {
console.log('reconnecting');
reconnect();
}
}, [connect, isConnectError, reconnect]);

useEffect(() => {
if (url && !hasStartedPollingRef.current) {
hasStartedPollingRef.current = true;
startPolling();
Linking.openURL(url);
}
}, [startPolling, url]);

return (
<Pressable onPress={initiateConnect}>
<View className="bg-fc-purple min-h-[60px] min-w-[120px] flex-row items-center justify-center rounded-lg p-4">
{isSigningIn ? (
<Loader />
) : (
<Text className="text-lg font-bold text-white">Login</Text>
)}
</View>
</Pressable>
);
}

0 comments on commit c2852ae

Please sign in to comment.