'use client'; import Note from '@/components/Note'; import LoaderButton from '@/components/primitives/LoaderButton'; import SiteGrid from '@/components/SiteGrid'; import { useAppState } from '@/state/AppState'; import { clsx } from 'clsx/lite'; import { IoCloseSharp } from 'react-icons/io5'; import { useState } from 'react'; import { Tags } from '@/tag'; import { usePathname } from 'next/navigation'; import { PATH_GRID_INFERRED } from '@/site/paths'; import PhotoTagFieldset from './PhotoTagFieldset'; import { tagMultiplePhotosAction } from '@/photo/actions'; import { toastSuccess } from '@/toast'; import DeletePhotosButton from './DeletePhotosButton'; import { photoQuantityText } from '@/photo'; export default function AdminBatchEditPanelClient({ uniqueTags, }: { uniqueTags: Tags }) { const pathname = usePathname(); const { isUserSignedIn, selectedPhotoIds, setSelectedPhotoIds, isPerformingSelectEdit, setIsPerformingSelectEdit, } = useAppState(); const [tags, setTags] = useState(); const [tagErrorMessage, setTagErrorMessage] = useState(''); const isInTagMode = tags !== undefined; const resetForm = () => { setSelectedPhotoIds?.(undefined); setTags(undefined); setTagErrorMessage(''); }; const photosText = photoQuantityText(selectedPhotoIds?.length ?? 0, false); const renderPhotoText = () => selectedPhotoIds?.length === 0 ? 'Select photos below' : `${photosText} selected`; const renderActions = () => isInTagMode ? <> { setTags(undefined); setTagErrorMessage(''); }} disabled={isPerformingSelectEdit} > Cancel { setIsPerformingSelectEdit?.(true); tagMultiplePhotosAction( tags, selectedPhotoIds ?? [], ) .then(() => { toastSuccess( `Tags applied to ${photosText}` ); resetForm(); }) .finally(() => setIsPerformingSelectEdit?.(false)); }} disabled={ !tags || Boolean(tagErrorMessage) || (selectedPhotoIds?.length ?? 0) === 0 || isPerformingSelectEdit } primary > Apply Tags : <> {(selectedPhotoIds?.length ?? 0) > 0 && <> setTags('')} disabled={isPerformingSelectEdit} > Tag ... setIsPerformingSelectEdit?.(true)} onDelete={resetForm} onFinish={() => setIsPerformingSelectEdit?.(false)} /> } } onClick={() => setSelectedPhotoIds?.(undefined)} /> ; return ( isUserSignedIn && pathname === PATH_GRID_INFERRED && selectedPhotoIds !== undefined ) ? {renderActions()} } spaceChildren={false} hideIcon > {isInTagMode ? :
{renderPhotoText()}
}
{tagErrorMessage &&
{tagErrorMessage}
} } /> : null; }