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 { cn } from '@/lib/utils'; import useMediaStore from '@/stores/MediaStore'; import { Edit3 } from 'lucide-react'; import { useEffect, useState } from 'react'; export default function EditSidebar({ isOpen, onClose }) { const { memes, backgrounds, isFetchingMemes, isFetchingBackgrounds, selectedMeme, selectedBackground, fetchMemes, fetchBackgrounds, selectMeme, selectBackground, clearSelectedMeme, clearSelectedBackground, } = useMediaStore(); // Track the current active tab const [activeTab, setActiveTab] = useState('memes'); // 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) => { 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 Meme */}
setActiveTab('memes')}> {selectedMeme ? (
Selected Meme
) : (
No meme
)}

Meme Overlay

{/* Selected Background */}
setActiveTab('backgrounds')}> {selectedBackground ? (
Selected Background
) : (
No background
)}

Background

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) => ( ))}
)}
); }