Vercel/src/admin/AdminUploadsClient.tsx
2025-02-16 10:19:16 -06:00

43 lines
1.1 KiB
TypeScript

'use client';
import { StorageListResponse } from '@/platforms/storage';
import AdminAddAllUploads from './AdminAddAllUploads';
import { useMemo, useState } from 'react';
import { Tags } from '@/tag';
import AdminUploadsTable from './AdminUploadsTable';
export type UrlAddStatus = {
url: string
uploadedAt?: Date
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]);
return (
<div className="space-y-4">
{(urls.length > 1 || isAdding) &&
<AdminAddAllUploads {...{
storageUrls,
uniqueTags,
isAdding,
setIsAdding,
setUrlAddStatuses,
}} />}
<AdminUploadsTable {...{ isAdding, urlAddStatuses, setUrlAddStatuses }} />
</div>
);
}