import React, { useState } from 'react'; import { Dialog } from 'primereact/dialog'; import { Card } from 'primereact/card'; import { ProgressSpinner } from 'primereact/progressspinner'; import SubscriptionPaymentButtons from '@/components/bitcoinConnect/SubscriptionPaymentButton'; import { useSession } from 'next-auth/react'; import { useToast } from '@/hooks/useToast'; import axios from 'axios'; const RenewSubscription = ({ visible, onHide, subscribedUntil }) => { const [isProcessing, setIsProcessing] = useState(false); const { data: session, update } = useSession(); const { showToast } = useToast(); const handleSubscriptionSuccess = async (response) => { setIsProcessing(true); try { const apiResponse = await axios.put('/api/users/subscription', { userId: session.user.id, isSubscribed: true, }); if (apiResponse.data) { await update(); showToast('success', 'Subscription Renewed', 'Your subscription has been renewed successfully.'); onHide(); } else { throw new Error('Failed to update subscription status'); } } catch (error) { console.error('Subscription renewal error:', error); showToast('error', 'Subscription Renewal Failed', `Error: ${error.message}`); } finally { setIsProcessing(false); } }; const handleSubscriptionError = (error) => { console.error('Subscription error:', error); showToast('error', 'Subscription Renewal Failed', `An error occurred: ${error.message}`); setIsProcessing(false); }; const formatDate = (date) => { if (!date) return 'N/A'; return new Date(date).toLocaleDateString(); }; return ( {isProcessing ? (
Processing renewal...
) : (

Renew Your Subscription

Your current subscription is valid until {formatDate(subscribedUntil)}

Renew now to extend your access to premium benefits!

)}
); }; export default RenewSubscription;