'use client'; import { createClient } from '@/utils/supabase/client'; import { type Provider } from '@supabase/supabase-js'; import { getURL } from '@/utils/helpers'; import { redirectToPath } from './server'; import { AppRouterInstance } from 'next/dist/shared/lib/app-router-context.shared-runtime'; export async function handleRequest( e: React.FormEvent, requestFunc: (formData: FormData) => Promise, router: AppRouterInstance | null = null ): Promise { // Prevent default form submission refresh e.preventDefault(); const formData = new FormData(e.currentTarget); const redirectUrl: string = await requestFunc(formData); if (router) { // If client-side router is provided, use it to redirect return router.push(redirectUrl); } else { // Otherwise, redirect server-side return await redirectToPath(redirectUrl); } } export async function signInWithOAuth(e: React.FormEvent) { // Prevent default form submission refresh e.preventDefault(); const formData = new FormData(e.currentTarget); const provider = String(formData.get('provider')).trim() as Provider; // Create client-side supabase client and call signInWithOAuth const supabase = createClient(); const redirectURL = getURL('/auth/callback'); await supabase.auth.signInWithOAuth({ provider: provider, options: { redirectTo: redirectURL } }); }