UploadFile.tsx 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. <<<<<<< HEAD
  2. import { useUploadFileMutation, File } from '../../gql'
  3. =======
  4. import { useUploadFileMutation, File, FilesDocument } from '../../gql'
  5. >>>>>>> 09cdf731785304362601ab5d7e726061524c82a3
  6. import { useForm, TextInput } from '../../form'
  7. import { customEvent } from '../../lib/customEvent'
  8. const UploadFile = ({ callback }: { callback?: (file: File) => void }) => {
  9. const [uploadFile, { error, loading }] = useUploadFileMutation()
  10. const { values, onChange } = useForm({ file: undefined, comment: '' })
  11. return (
  12. <>
  13. <form
  14. onSubmit={async (event) => {
  15. event.preventDefault()
  16. const file = await uploadFile({ variables: values })
  17. callback && callback(file.data.uploadFile)
  18. }}
  19. >
  20. <h2>File Upload</h2>
  21. <input
  22. name='file'
  23. type='file'
  24. accept='video/*'
  25. onChange={(event) => {
  26. console.log(
  27. event.target.files,
  28. event.target.files?.item(0),
  29. event.target.files?.item(0)?.type
  30. )
  31. onChange(customEvent('file', event.target.files?.item(0)))
  32. }}
  33. />
  34. <TextInput
  35. name='comment'
  36. value={values.comment}
  37. placeholder='Comment'
  38. onChange={onChange}
  39. />
  40. <button type='submit' disabled={loading}>
  41. Upload
  42. </button>
  43. {error && <div className='error'>Error</div>}
  44. </form>
  45. </>
  46. )
  47. }
  48. export default UploadFile