import { useState } from 'react';
import { getStripe } from '@/lib/stripe';
import { supabase } from '@/lib/supabase';
export function useStripeCheckout() {
const [loading, setLoading] = useState(false);
const handleCheckout = async (priceId: string) => {
try {
setLoading(true);
// Get the current session to access the access token
const { data: { session } } = await supabase.auth.getSession();
if (!session?.access_token) {
throw new Error('Not authenticated');
}
// Create a checkout session
const response = await fetch('/api/create-checkout-session', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${session.access_token}`,
},
body: JSON.stringify({ priceId }),
});
const { sessionId, error } = await response.json();
if (error) {
throw new Error(error);
}
// Redirect to Stripe checkout
const stripe = await getStripe();
const { error: stripeError } = await stripe!.redirectToCheckout({
sessionId,
});
if (stripeError) {
throw new Error(stripeError.message);
}
} catch (error) {
console.error('Error:', error);
throw error;
} finally {
setLoading(false);
}
};
return {
handleCheckout,
loading,
};
}