'use client'; import { useEffect, useState } from 'react'; import { useRouter } from 'next/navigation'; import Header from '../components/Header'; import Sidebar from '../components/Sidebar'; import AppGallery from '../components/AppGallery'; import type { User, GeneratedApp } from '@/types'; export default function AppsPage() { const [user, setUser] = useState(null); const [apps, setApps] = useState([]); const [isLoading, setIsLoading] = useState(true); const [filterType, setFilterType] = useState('all'); const router = useRouter(); useEffect(() => { // Fetch current user fetch('/api/auth/me') .then(res => { if (!res.ok) { router.push('/login'); return null; } return res.json(); }) .then(data => { if (data) setUser(data); }) .catch(() => router.push('/login')); // Fetch apps fetch('/api/apps') .then(res => res.json()) .then(data => { if (data.apps) { setApps(data.apps); } }) .catch(console.error) .finally(() => setIsLoading(false)); }, [router]); const handleSelectApp = (id: string) => { router.push(`/apps/${id}`); }; const handleDeleteApp = async (id: string) => { try { const response = await fetch(`/api/apps/${id}`, { method: 'DELETE', }); if (response.ok) { setApps(apps.filter(a => a.id !== id)); } } catch (error) { console.error('Failed to delete app:', error); } }; const filteredApps = filterType === 'all' ? apps : apps.filter(app => app.appType === filterType); const appTypes = Array.from(new Set(apps.map(a => a.appType).filter(Boolean))); return (

Generated Apps

{appTypes.length > 0 && (
)}
); }