import React, { useState, memo } from "react"; import { useGenerator } from "../../context/GeneratorContext"; import { useUpload } from "../../context/UploadContext"; function SelectionToolbar({ currentImages = [], providerId = null, inline = false }) { const { getSelectedCount, clearSelection, setSelectionMode, getSelectedUrls, getSelectedItemsData, toggleFavorite, selectAll } = useGenerator(); const { uploadImages, uploading } = useUpload(); const [importing, setImporting] = useState(false); const count = getSelectedCount(); const show = count > 0 || currentImages.length > 0; const handleImportAll = async () => { const items = getSelectedItemsData(); if (items.length === 0) return; // Build items with url and title for proper naming on import const importItems = items .filter((item) => item.importUrl) .map((item) => ({ url: item.importUrl, title: item.imageAlt || "", author: item.author?.name || "" })); if (importItems.length === 0) return; setImporting(true); try { await uploadImages(importItems); clearSelection(); } finally { setImporting(false); } }; const handleFavoriteAll = () => { const items = getSelectedItemsData(); items.forEach(({ providerId, imageId, ...data }) => { toggleFavorite(providerId, imageId, data); }); clearSelection(); }; const handleClear = () => { clearSelection(); setSelectionMode(false); }; const handleSelectAll = () => { if (!providerId || !currentImages.length) return; const imageData = {}; currentImages.forEach(img => { const key = `${providerId}:${img.imageId}`; imageData[key] = { importUrl: img.importUrl, imageSrc: img.imageSrc, imageAlt: img.imageAlt, author: img.author, previewUrl: img.previewUrl }; }); selectAll(providerId, currentImages.map(img => img.imageId), imageData); }; if (!show && !currentImages.length) return null; const urls = getSelectedUrls(); const canImport = urls.length > 0 && !uploading && !importing; const isFavoritesTab = providerId === "favorites"; // Only show when there are selected images if (count === 0) return null; return (