"use client"; import { useEffect } from "react"; import { useRouter } from "next/navigation"; import { useAuth } from "@/lib/auth-context"; import { useState } from "react"; import UploadArea from "@/components/UploadArea"; export default function UploadPage() { const { isAuthenticated, user } = useAuth(); const router = useRouter(); const [userSubscription, setUserSubscription] = useState(null); const [authInitialized, setAuthInitialized] = useState(false); // Wait for auth to initialize from localStorage useEffect(() => { const timer = setTimeout(() => { setAuthInitialized(true); }, 100); return () => clearTimeout(timer); }, []); // Check authentication and fetch subscription useEffect(() => { if (!authInitialized) return; if (!isAuthenticated || !user) { router.push("/login?redirect=/upload"); return; } // Fetch user subscription const fetchSubscription = async () => { if (!user?.id) return; try { const response = await fetch("/api/subscriptions/me", { headers: { "user-id": user.id, }, }); if (response.ok) { const data = await response.json(); setUserSubscription(data.subscription); } } catch (error) { console.error("Error fetching subscription:", error); } }; fetchSubscription(); }, [authInitialized, isAuthenticated, user, router]); // Show loading while auth initializes if (!authInitialized || !isAuthenticated) { return (
Loading...
); } // If no subscription found after loading, treat it as no subscription // Don't block the page from showing const hasActiveSubscription = userSubscription && userSubscription.status === "ACTIVE"; return (
{/* Header */}

Upload Files

{/*

Upload your .blend files to start rendering

*/}
{/* Subscription Warning */} {!hasActiveSubscription && (

Subscribe to use our services

You need an active subscription to upload files. Subscribe to a plan to continue.

)} {/* Subscription Info - Only show if active */} {hasActiveSubscription && userSubscription && (

Your {userSubscription.tier} Plan

Storage:{" "} {parseFloat(userSubscription.current_usage_gb).toFixed(2)} GB /{" "} {userSubscription.storage_limit_gb} GB used

)} {/* Upload Area */}

Start by uploading at least one .blend file

); }