diff --git a/app/api/get-receipt-id/route.ts b/app/api/get-receipt-id/route.ts index 422db45..ef0a627 100644 --- a/app/api/get-receipt-id/route.ts +++ b/app/api/get-receipt-id/route.ts @@ -1,5 +1,5 @@ import { NextResponse } from 'next/server'; -import { getReceiptId } from '../webhooks/stripe/route'; +import { getReceiptId } from '../../lib/receipts'; export async function GET(req: Request) { try { diff --git a/app/api/webhooks/stripe/route.ts b/app/api/webhooks/stripe/route.ts index 934cdef..c4e05a2 100644 --- a/app/api/webhooks/stripe/route.ts +++ b/app/api/webhooks/stripe/route.ts @@ -1,8 +1,6 @@ import { NextResponse } from 'next/server'; import { headers } from 'next/headers'; - -// In-memory storage for demo purposes - in production, use a database -const paymentReceipts = new Map(); +import { storeReceiptId } from '../../../lib/receipts'; export async function POST(req: Request) { try { @@ -36,7 +34,7 @@ export async function POST(req: Request) { // Store the payment intent ID as the receipt ID if (paymentIntentId) { - paymentReceipts.set(sessionId, paymentIntentId); + storeReceiptId(sessionId, paymentIntentId); console.log(`Stored receipt ID ${paymentIntentId} for session ${sessionId}`); } } @@ -49,9 +47,4 @@ export async function POST(req: Request) { { status: 400 } ); } -} - -// Helper function to get receipt ID for a session -export function getReceiptId(sessionId: string): string | null { - return paymentReceipts.get(sessionId) || null; } \ No newline at end of file diff --git a/app/auth/login/page.tsx b/app/auth/login/page.tsx index 91a92b6..a9ee067 100644 --- a/app/auth/login/page.tsx +++ b/app/auth/login/page.tsx @@ -20,8 +20,9 @@ export default function LoginPage() { setLoading(true); await signIn(email, password); router.push('/'); // Redirect to home page after successful login - } catch (error: any) { - setError(error.message || 'Failed to sign in'); + } catch (error: unknown) { + const errorMessage = error instanceof Error ? error.message : 'Failed to sign in'; + setError(errorMessage); } finally { setLoading(false); } @@ -33,8 +34,9 @@ export default function LoginPage() { setLoading(true); await signInWithGoogle(); router.push('/'); - } catch (error: any) { - setError(error.message || 'Failed to sign in with Google'); + } catch (error: unknown) { + const errorMessage = error instanceof Error ? error.message : 'Failed to sign in with Google'; + setError(errorMessage); } finally { setLoading(false); } @@ -153,7 +155,7 @@ export default function LoginPage() {
- Don't have an account? + Don't have an account?

- Enter your email address and we'll send you a link to reset your password. + Enter your email address and we'll send you a link to reset your password.

diff --git a/app/auth/signup/page.tsx b/app/auth/signup/page.tsx index c19a7a0..8501104 100644 --- a/app/auth/signup/page.tsx +++ b/app/auth/signup/page.tsx @@ -26,8 +26,9 @@ export default function SignUpPage() { setLoading(true); await signUp(email, password); router.push('/'); // Redirect to home page after successful signup - } catch (error: any) { - setError(error.message || 'Failed to create an account'); + } catch (error: unknown) { + const errorMessage = error instanceof Error ? error.message : 'Failed to create an account'; + setError(errorMessage); } finally { setLoading(false); } @@ -39,8 +40,9 @@ export default function SignUpPage() { setLoading(true); await signInWithGoogle(); router.push('/'); - } catch (error: any) { - setError(error.message || 'Failed to sign up with Google'); + } catch (error: unknown) { + const errorMessage = error instanceof Error ? error.message : 'Failed to sign up with Google'; + setError(errorMessage); } finally { setLoading(false); } diff --git a/app/components/PaymentModal.tsx b/app/components/PaymentModal.tsx index a28f33a..9191885 100644 --- a/app/components/PaymentModal.tsx +++ b/app/components/PaymentModal.tsx @@ -1,6 +1,6 @@ 'use client'; -import { useState, useEffect } from 'react'; +import { useState } from 'react'; import { useAuth } from '../context/AuthContext'; import { getStripe } from '../lib/stripe'; diff --git a/app/components/RewardCard.tsx b/app/components/RewardCard.tsx index 185281d..08e4022 100644 --- a/app/components/RewardCard.tsx +++ b/app/components/RewardCard.tsx @@ -1,5 +1,6 @@ 'use client'; +import Image from 'next/image'; import { cleanImageUrl, getRarityColor, getRarityLabel, type Reward } from '../lib/rewards'; interface RewardCardProps { @@ -13,9 +14,11 @@ export default function RewardCard({ reward, showValue = true, className = '' }:
{reward.image && (
- {reward.name} { // Fallback to emoji if image fails to load diff --git a/app/lib/receipts.ts b/app/lib/receipts.ts new file mode 100644 index 0000000..a039f8b --- /dev/null +++ b/app/lib/receipts.ts @@ -0,0 +1,12 @@ +// In-memory storage for demo purposes - in production, use a database +const paymentReceipts = new Map(); + +// Store receipt ID for a session +export function storeReceiptId(sessionId: string, receiptId: string): void { + paymentReceipts.set(sessionId, receiptId); +} + +// Helper function to get receipt ID for a session +export function getReceiptId(sessionId: string): string | null { + return paymentReceipts.get(sessionId) || null; +} \ No newline at end of file diff --git a/app/page.tsx b/app/page.tsx index b53864b..87f608a 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -1,6 +1,5 @@ 'use client'; -import Image from "next/image"; import Link from "next/link"; import Header from "./components/Header"; import { useAuth } from "./context/AuthContext";