DropMediaItem.jsx 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import React, { memo, useEffect, useState } from "react";
  2. import { connect } from "react-redux"
  3. import { backendURL } from "../../helpers/gql";
  4. import DropMediaFilesOptions from "../DropMediaFilesOptions/DropMediaFilesOptions";
  5. import { calculateFileSize } from "../utils/calculateFileSize";
  6. import { DropImg, DropVideo, DropAudio, DropFile } from "./DropMediaFiles/DropMediaFiles";
  7. import { DropMediaItemWrap } from "./DropMediaItem.style"
  8. export const DropMediaItem = ({mediaItem, chatId}) => {
  9. const [url, setUrl] = useState('')
  10. const [name, setName] = useState('');
  11. const [size, setSize] = useState('')
  12. useEffect(() => {
  13. setUrl(mediaItem.url ? `${backendURL}/${mediaItem.url || ''}` : URL.createObjectURL(mediaItem))
  14. setName((mediaItem?.name?.length || mediaItem?.originalFileName?.length) > 22 ?
  15. (mediaItem?.name || mediaItem?.originalFileName).slice(0,10) + '...' + (mediaItem?.name || mediaItem?.originalFileName).slice(-10) :
  16. (mediaItem?.name || mediaItem?.originalFileName))
  17. setSize(calculateFileSize(mediaItem?.size))
  18. },[])
  19. const checkType = (type) => {
  20. if(type.includes("image")){
  21. return <DropImg url={url} />
  22. } else if(type.includes("video")){
  23. return <DropVideo url={url}/>
  24. } else if (type.includes("audio")){
  25. return <DropAudio url={url} name={name} size={size}/>
  26. } else {
  27. return <DropFile name={name} url={url} size={size}/>
  28. }
  29. }
  30. return(
  31. <DropMediaItemWrap>
  32. {checkType(mediaItem?.type)}
  33. <DropMediaFilesOptions chatId={chatId} mediaKey={mediaItem.uploadDate}/>
  34. </DropMediaItemWrap>
  35. )
  36. }
  37. export const MemoizedDropMediaItem = memo(DropMediaItem);