From 339416f80f8a62aa858b8020d4fcb7dc2ac79090 Mon Sep 17 00:00:00 2001 From: Nevo David Date: Sun, 19 Jan 2025 16:44:54 +0700 Subject: [PATCH] feat: better login --- .../auth/providers/farcaster.provider.tsx | 15 ++- .../web3/providers/wrapcaster.provider.tsx | 103 ++++++++---------- 2 files changed, 53 insertions(+), 65 deletions(-) diff --git a/apps/frontend/src/components/auth/providers/farcaster.provider.tsx b/apps/frontend/src/components/auth/providers/farcaster.provider.tsx index fbba5466..18e3c6a2 100644 --- a/apps/frontend/src/components/auth/providers/farcaster.provider.tsx +++ b/apps/frontend/src/components/auth/providers/farcaster.provider.tsx @@ -1,17 +1,22 @@ -import { useCallback } from 'react'; +import { FC, useCallback } from 'react'; import interClass from '@gitroom/react/helpers/inter.font'; import { useVariables } from '@gitroom/react/helpers/variable.context'; import { NeynarContextProvider, Theme, useNeynarContext } from '@neynar/react'; import { NeynarAuthButton } from '@gitroom/frontend/components/auth/nayner.auth.button'; -import { useRouter } from 'next/navigation'; export const FarcasterProvider = () => { - const { neynarClientId } = useVariables(); - const gotoLogin = useCallback(async (code: string) => { window.location.href = `/auth?provider=FARCASTER&code=${code}`; }, []); + return ( + + ); +}; + +export const ButtonCaster: FC<{ login: (code: string) => void }> = (props) => { + const { login } = props; + const { neynarClientId } = useVariables(); return ( { defaultTheme: Theme.Dark, }} > - +
diff --git a/apps/frontend/src/components/launches/web3/providers/wrapcaster.provider.tsx b/apps/frontend/src/components/launches/web3/providers/wrapcaster.provider.tsx index a00d32c5..f5e2d1fe 100644 --- a/apps/frontend/src/components/launches/web3/providers/wrapcaster.provider.tsx +++ b/apps/frontend/src/components/launches/web3/providers/wrapcaster.provider.tsx @@ -6,76 +6,59 @@ import { useVariables } from '@gitroom/react/helpers/variable.context'; import { TopTitle } from '@gitroom/frontend/components/launches/helpers/top.title.component'; import { useModals } from '@mantine/modals'; import { LoadingComponent } from '@gitroom/frontend/components/layout/loading'; -import { NeynarAuthButton, NeynarContextProvider, Theme, useNeynarContext } from '@neynar/react'; +import { + NeynarAuthButton, + NeynarContextProvider, + Theme, + useNeynarContext, +} from '@neynar/react'; import { INeynarAuthenticatedUser } from '@neynar/react/dist/types/common'; +import { ButtonCaster } from '@gitroom/frontend/components/auth/providers/farcaster.provider'; export const WrapcasterProvider: FC = (props) => { - const [id, state] = props.nonce.split('||'); + const [_, state] = props.nonce.split('||'); const modal = useModals(); const [hide, setHide] = useState(false); - const auth = useCallback((params: { user: INeynarAuthenticatedUser }) => { + const auth = useCallback((code: string) => { setHide(true); - return props.onComplete(Buffer.from(JSON.stringify(params.user)).toString('base64'), state); - }, []); + return props.onComplete(code, state); + }, [state]); return ( - { - // auth(params); - // }, - // }, - }} - > -
- - -
- {hide ? ( -
- -
- ) : ( -
- - -
- )} -
+ + + +
+ {hide ? ( +
+ +
+ ) : ( +
+ +
+ )}
- +
); }; - -export const Logged: FC<{onSuccess: (params: {user: INeynarAuthenticatedUser}) => void}> = (props) => { - const context = useNeynarContext(); - useEffect(() => { - if (context.isAuthenticated && context.user) { - props.onSuccess({ user: context.user }); - } - }, [context.isAuthenticated]); - return null; -} \ No newline at end of file