'use client'; import { useState } from 'react'; import Header from '../components/Header'; import RewardCard from '../components/RewardCard'; import { fetchRandomReward, getReceiptId, addInventoryItem, type Reward } from '../lib/rewards'; import { useAuth } from '../context/AuthContext'; export default function TestRewardPage() { const { user } = useAuth(); const [reward, setReward] = useState(null); const [isLoading, setIsLoading] = useState(false); const [error, setError] = useState(null); const [inventoryStatus, setInventoryStatus] = useState<'idle' | 'pending' | 'success' | 'error'>('idle'); const [receiptId, setReceiptId] = useState('test-receipt-123'); const [sessionId, setSessionId] = useState('cs_test_1234567890'); const [stripeReceiptId, setStripeReceiptId] = useState(null); const handleGetRandomReward = async () => { setIsLoading(true); setError(null); setReward(null); setInventoryStatus('idle'); setStripeReceiptId(null); try { const randomReward = await fetchRandomReward(); if (randomReward) { setReward(randomReward); } } catch (err) { console.error('Error fetching random reward:', err); setError(err instanceof Error ? err.message : 'Failed to fetch reward'); } finally { setIsLoading(false); } }; const handleGetReceiptId = async () => { if (!sessionId) { setError('Please enter a session ID'); return; } try { const receipt = await getReceiptId(sessionId); setStripeReceiptId(receipt); if (receipt) { console.log('Got receipt ID from Stripe:', receipt); } else { console.log('No receipt ID found for session:', sessionId); } } catch (err) { console.error('Error getting receipt ID:', err); setError(err instanceof Error ? err.message : 'Failed to get receipt ID'); } }; const handleAddToInventory = async () => { if (!reward || !user?.uid) { setError('No reward or user available'); return; } setInventoryStatus('pending'); setError(null); // Use Stripe receipt ID if available, otherwise use manual receipt ID const finalReceiptId = stripeReceiptId || receiptId; try { const success = await addInventoryItem(finalReceiptId, user.uid, reward.id); if (success) { setInventoryStatus('success'); } else { setInventoryStatus('error'); setError('Failed to add to inventory'); } } catch (err) { console.error('Error adding to inventory:', err); setInventoryStatus('error'); setError(err instanceof Error ? err.message : 'Failed to add to inventory'); } }; return ( <>
{/* Page Header */}

Test Random Reward

Test the random reward API functionality with Stripe receipt IDs

{/* Input Fields */}
setSessionId(e.target.value)} className="px-4 py-2 rounded-lg bg-foreground/5 border border-foreground/10 text-sm focus:outline-none focus:ring-2 focus:ring-purple-500" placeholder="Enter Stripe session ID" />
setReceiptId(e.target.value)} className="px-4 py-2 rounded-lg bg-foreground/5 border border-foreground/10 text-sm focus:outline-none focus:ring-2 focus:ring-purple-500" placeholder="Enter manual receipt ID" />
{/* Test Buttons */}
{reward && user && ( )}
{/* Receipt ID Display */} {stripeReceiptId && (

✅ Stripe Receipt ID: {stripeReceiptId}

)} {/* Error Message */} {error && (

{error}

)} {/* Inventory Status */} {inventoryStatus !== 'idle' && (

{inventoryStatus === 'success' ? '✅ Added to inventory successfully!' : inventoryStatus === 'error' ? '❌ Failed to add to inventory' : '⏳ Adding to inventory...'}

)} {/* Reward Display */} {reward && (

Random Reward

)} {/* API Info */}

API Information

Random Reward Endpoint: /api/get-random-reward
Get Receipt ID Endpoint: /api/get-receipt-id
Add Inventory Endpoint: /api/add-inventory-item
Stripe Webhook: /api/webhooks/stripe
External Reward API: vps.playpoolstudios.com/boxy/api/get_random_reward.php
External Inventory API: vps.playpoolstudios.com/boxy/api/add_inventory_item.php
); }