Vercel/src/admin/AdminUploadsClient.tsx
2025-03-15 00:20:36 -05:00

49 lines
1.2 KiB
TypeScript

'use client';
import { StorageListItem, StorageListResponse } from '@/platforms/storage';
import AdminBatchUploadActions from './AdminBatchUploadActions';
import { useMemo, useState } from 'react';
import { Tags } from '@/tag';
import AdminUploadsTable from './AdminUploadsTable';
export type UrlAddStatus = StorageListItem & {
status?: 'waiting' | 'adding' | 'added'
statusMessage?: string
progress?: number
};
export default function AdminUploadsClient({
urls,
uniqueTags,
}: {
urls: StorageListResponse
uniqueTags?: Tags
}) {
const [isAdding, setIsAdding] = useState(false);
const [urlAddStatuses, setUrlAddStatuses] = useState<UrlAddStatus[]>(urls);
const storageUrls = useMemo(() => urls.map(({ url }) => url), [urls]);
const [isDeleting, setIsDeleting] = useState(false);
return (
<div className="space-y-4">
{(urls.length > 1 || isAdding) &&
<AdminBatchUploadActions {...{
storageUrls,
uniqueTags,
isAdding,
setIsAdding,
setUrlAddStatuses,
isDeleting,
setIsDeleting,
}} />}
<AdminUploadsTable {...{
isAdding,
urlAddStatuses,
setUrlAddStatuses,
isDeleting,
}} />
</div>
);
}