diff --git a/apps/studio/pages/sign-in-vercel-marketplace.tsx b/apps/studio/pages/sign-in-vercel-marketplace.tsx index f1c0d9cd672..d9541b97bf0 100644 --- a/apps/studio/pages/sign-in-vercel-marketplace.tsx +++ b/apps/studio/pages/sign-in-vercel-marketplace.tsx @@ -1,4 +1,4 @@ -import { useState } from 'react' +import { useEffect, useState } from 'react' import toast from 'react-hot-toast' import * as Sentry from '@sentry/nextjs' @@ -21,35 +21,41 @@ const SignInVercelMarketplace = () => { query: { vercel_id_token, vercel_resource_id }, } = router - async function onSignInWithVercelMarketplace() { - if (isLoggedIn) { - await auth.signOut() + useEffect(() => { + if (!isReady) { + return } - try { - if (!vercel_id_token) { - throw new Error('missing required id_token query param') + async function onSignInWithVercelMarketplace() { + try { + if (!vercel_id_token) { + throw new Error('missing required id_token query param') + } + + setLoading(true) + const { error } = await auth.signInWithIdToken({ + token: vercel_id_token as string, + provider: 'vercel_marketplace', + }) + + if (error) { + throw error + } + + setIsRedirecting(true) + router.push(vercel_resource_id ? `/project/${vercel_resource_id}` : `/projects`) + } catch (error: any) { + toast.error(`Failed to sign in via Vercel Marketplace: ${error.message}`) + Sentry.captureMessage( + '[CRITICAL] Failed to sign in via Vercel Marketplace: ' + error.message + ) + setLoading(false) + setIsRedirecting(false) } - - setLoading(true) - const { error } = await auth.signInWithIdToken({ - token: vercel_id_token as string, - provider: 'vercel_marketplace', - }) - - if (error) { - throw error - } - - setIsRedirecting(true) - router.push(vercel_resource_id ? `/project/${vercel_resource_id}` : `/projects`) - } catch (error: any) { - toast.error(`Failed to sign in via Vercel Marketplace: ${error.message}`) - Sentry.captureMessage('[CRITICAL] Failed to sign in via Vercel Marketplace: ' + error.message) - setLoading(false) - setIsRedirecting(false) } - } + + onSignInWithVercelMarketplace() + }, [router, isReady, vercel_resource_id, vercel_id_token]) return (
@@ -78,38 +84,7 @@ const SignInVercelMarketplace = () => {

Continue to Supabase Dashboard

- {loading ? ( -

Checking your access rights...

- ) : ( -
- - {isReady && !vercel_id_token && ( -

An ID token is required to login

- )} -
- )} -
-

- By continuing, you agree to Supabase's{' '} - - Terms of Service - {' '} - and{' '} - - Privacy Policy - - , and to receive periodic emails with updates. -

-
+ {loading &&

Checking your access rights...

}
) }