'use client'; import React, { useState } from 'react'; import useImageUpload from '../../lib/hooks/useImageUpload'; import { cn, fetcher } from '@/lib/utils'; import { ChatEntity, MessageBase } from '@/lib/types'; import { useRouter } from 'next/navigation'; import Loading from '../ui/Loading'; export interface ImageSelectorProps {} type Example = { url: string; initMessages: MessageBase[]; }; const ImageSelector: React.FC = () => { const router = useRouter(); const [isUploading, setUploading] = useState(false); const { getRootProps, getInputProps, isDragActive } = useImageUpload( undefined, async files => { const formData = new FormData(); if (files.length !== 1) { throw new Error('Only one image can be uploaded at a time'); } setUploading(true); const reader = new FileReader(); reader.readAsDataURL(files[0]); reader.onload = async () => { const resp = await fetcher('/api/upload', { method: 'POST', body: JSON.stringify({ base64: reader.result as string, fileType: files[0].type, }), }); setUploading(false); if (resp) { router.push(`/chat/${resp.id}`); } }; }, ); return (

{isUploading ? ( ) : ( 'Drag or drop image here, or click to select images' )}

); }; export default ImageSelector;