'use client' import { useState, useEffect } from 'react' import Image from 'next/image' interface PastDrop { id: number item: string size: number fill: number unit: string ppu: number image_url: string | null created_at: string soldOutInHours: number } export default function PastDrops() { const [drops, setDrops] = useState([]) const [loading, setLoading] = useState(true) useEffect(() => { fetchPastDrops() }, []) const fetchPastDrops = async () => { try { const response = await fetch('/api/drops/past') if (response.ok) { const data = await response.json() setDrops(data) } } catch (error) { console.error('Error fetching past drops:', error) } finally { setLoading(false) } } const formatSoldOutTime = (hours: number) => { if (hours < 1) { return 'Sold out in less than 1h' } else if (hours === 1) { return 'Sold out in 1h' } else if (hours < 24) { return `Sold out in ${hours}h` } else { const days = Math.floor(hours / 24) const remainingHours = hours % 24 if (remainingHours === 0) { return days === 1 ? 'Sold out in 1 day' : `Sold out in ${days} days` } else { return `Sold out in ${days}d ${remainingHours}h` } } } if (loading) { return (

Loading past drops...

) } if (drops.length === 0) { return (

No past drops yet. Check back soon!

) } return (
{drops.map((drop) => (
{drop.image_url ? (
{drop.item}
) : (
No Image
)} {drop.item}
{formatSoldOutTime(drop.soldOutInHours)}
))}
) }