import { Button } from '@/components/ui/button'; import { Sheet, SheetContent, SheetHeader, SheetTitle } from '@/components/ui/sheet'; import { Spinner } from '@/components/ui/spinner'; import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; import useMediaStore from '@/stores/MediaStore'; import { Edit3 } from 'lucide-react'; import { useEffect, useState } from 'react'; interface EditSidebarProps { isOpen: boolean; onClose: () => void; } export default function EditSidebar({ isOpen, onClose }: EditSidebarProps) { const { memes, backgrounds, isFetchingMemes, isFetchingBackgrounds, selectedMeme, selectedBackground, fetchMemes, fetchBackgrounds, selectMeme, selectBackground, clearSelectedMeme, clearSelectedBackground, } = useMediaStore(); // Track the current active tab const [activeTab, setActiveTab] = useState('backgrounds'); // Fetch data when sidebar opens for the current active tab useEffect(() => { if (isOpen) { if (activeTab === 'memes' && memes.length === 0 && !isFetchingMemes) { fetchMemes(); } else if (activeTab === 'backgrounds' && backgrounds.length === 0 && !isFetchingBackgrounds) { fetchBackgrounds(); } } }, [isOpen, activeTab, memes.length, backgrounds.length, isFetchingMemes, isFetchingBackgrounds]); const handleTabChange = (value: string) => { setActiveTab(value); if (value === 'memes' && memes.length === 0 && !isFetchingMemes) { fetchMemes(); } else if (value === 'backgrounds' && backgrounds.length === 0 && !isFetchingBackgrounds) { fetchBackgrounds(); } }; const handleMemeSelect = (meme) => { selectMeme(meme); }; const handleBackgroundSelect = (background) => { selectBackground(background); }; return ( !open && onClose()}> Edit Media {/* Currently Selected Items */}
{/* Selected Background */}
{selectedBackground ? (
Selected Background
) : (
No background
)}

Background

{/* Selected Meme */}
{selectedMeme ? (
Selected Meme
) : (
No meme
)}

Meme Overlay

Meme Background {isFetchingBackgrounds && } {!isFetchingBackgrounds && backgrounds.length === 0 &&
No backgrounds available.
} {!isFetchingBackgrounds && backgrounds.length > 0 && (
{backgrounds.map((item, index) => ( ))}
)}
{isFetchingMemes && } {!isFetchingMemes && memes.length === 0 &&
No memes available.
} {!isFetchingMemes && memes.length > 0 && (
{memes.map((item, index) => ( ))}
)}
); }