From 66c4ca35d6bd959c5e20d9e56a4c9e8a721e3cec Mon Sep 17 00:00:00 2001 From: Smokashi23 Date: Thu, 10 Oct 2024 16:51:43 +0530 Subject: [PATCH 1/6] -Added feature can upload pdf ,vedio, excel -Added file size limit while uploading -Changed the label from image to attachment --- public/images/pdf.png | Bin 0 -> 13096 bytes public/images/play.png | Bin 0 -> 22789 bytes public/images/sheets.png | Bin 0 -> 6766 bytes src/modules/details/components/ImageTag.tsx | 81 +++++++++++++++++--- src/modules/details/components/Timeline.tsx | 4 +- src/modules/details/index.tsx | 8 +- src/modules/shared/UploadBucket.tsx | 17 +++- src/modules/shared/constants.ts | 6 +- 8 files changed, 95 insertions(+), 21 deletions(-) create mode 100644 public/images/pdf.png create mode 100644 public/images/play.png create mode 100644 public/images/sheets.png diff --git a/public/images/pdf.png b/public/images/pdf.png new file mode 100644 index 0000000000000000000000000000000000000000..4154a4feb0601048b98cb27d40bb4d611e14bfb4 GIT binary patch literal 13096 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

|%*?2#9U%rD#*{i` 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 N+|V`BDbccz_#dTbl6e3C literal 0 HcmV?d00001 diff --git a/public/images/sheets.png b/public/images/sheets.png new file mode 100644 index 0000000000000000000000000000000000000000..e95f6848a95b28818b546a937d410c69f5bd8dcb GIT binary patch literal 6766 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 P5&Uhna { - const [srcImg, setSrcImg] = useState(); +export const MediaS3Tag = ({ path }: { path: string }) => { + const [srcFile, setSrcFile] = useState(); const [isLoading, setIsLoading] = useState(false); + const [fileType, setFileType] = useState(); + useEffect(() => { setIsLoading(true); s3GetPresignedUrl(path) - .then((img) => { + .then((assetUrl) => { setIsLoading(false); - setSrcImg(img); + setSrcFile(assetUrl); + const baseUrl = assetUrl.split('?')[0]; + const extension = baseUrl.split('.').pop()?.toLowerCase(); + + if (extension === 'pdf') { + setFileType('pdf'); + } else if (['jpg', 'jpeg', 'png', 'gif'].includes(extension || '')) { + setFileType('image'); + } else if (['xls', 'xlsx'].includes(extension)) { + setFileType('excel'); + } else if (['mp4', 'webm', 'ogg'].includes(extension)) { + setFileType('video'); + } else { + setFileType('unsupported'); + } }) .catch((e) => { console.log('unable to fetch', e); setIsLoading(false); }); - }, []); - return isLoading ? ( - - ) : ( - Image - ); + }, [path]); + + if (isLoading) { + return ; + } + + if (fileType === 'pdf') { + return ( + PDF Thumbnail window.open(srcFile, '_blank')} + style={{ cursor: 'pointer' }} + /> + ); + } else if (fileType === 'image') { + return ( + File + ); + } else if (fileType === 'excel') { + return ( + Excel Thumbnail window.open(srcFile, '_blank')} + style={{ cursor: 'pointer' }} + /> + ); + } else if (fileType === 'video') { + const videoType = srcFile?.split('.').pop()?.toLowerCase() === 'mp4' ? 'video/mp4' : 'video/webm'; + return ( + + ); + } else { + return

Unsupported file type

; + } }; diff --git a/src/modules/details/components/Timeline.tsx b/src/modules/details/components/Timeline.tsx index 07c968e..be7c5f8 100644 --- a/src/modules/details/components/Timeline.tsx +++ b/src/modules/details/components/Timeline.tsx @@ -11,7 +11,7 @@ import { Box, Chip, Paper, Typography } from '@mui/material'; import { DateFormate, getLastDaysFrom } from 'apis/utils/date.utils'; import { ticketStatusColours } from '../constants'; import { ITicketActivity } from '../type'; -import { ImageS3Tag } from './ImageTag'; +import { MediaS3Tag } from './ImageTag'; export const TimelineComponent = ({ activities }: any) => { return ( @@ -76,7 +76,7 @@ const TimeLineDescription = ({ activity }: { activity: ITicketActivity }) => {

)} {activity?.asset_url?.map((item) => ( - + ))} diff --git a/src/modules/details/index.tsx b/src/modules/details/index.tsx index 18c383c..4dbde9d 100644 --- a/src/modules/details/index.tsx +++ b/src/modules/details/index.tsx @@ -25,7 +25,7 @@ import EditIcon from '@mui/icons-material/Edit'; import { ticketStatusColours } from './constants'; -import { ImageS3Tag } from './components/ImageTag'; +import { MediaS3Tag } from './components/ImageTag'; import { UserContext } from 'App'; import { ROLES } from 'routes/roleConstants'; @@ -133,14 +133,14 @@ function Details() { - Image + Attachment {ticket?.asset_url?.map((item) => ( - + ))} diff --git a/src/modules/shared/UploadBucket.tsx b/src/modules/shared/UploadBucket.tsx index f5c4e44..8c25a5a 100644 --- a/src/modules/shared/UploadBucket.tsx +++ b/src/modules/shared/UploadBucket.tsx @@ -4,7 +4,7 @@ import { Box } from '@mui/system'; import { IconButton, Typography } from '@mui/material'; import CloseIcon from '@mui/icons-material/Close'; import { useState } from 'react'; -import { ALLOWED_TYPES } from './constants'; +import { ALLOWED_TYPES, MAX_FILE_SIZE } from './constants'; export const UploadBucket = ({ isLoading, @@ -32,11 +32,20 @@ export const UploadBucket = ({ if (invalidFile) { setErrorMessage(`Invalid file type: ${invalidFile.name}`); - } else { - setErrorMessage(null); - handleChange(selectedFiles); + return; } + + const oversizedFile = selectedFiles.find((file) => file.size > MAX_FILE_SIZE); + + if (oversizedFile) { + setErrorMessage(`File size exceeds limit: ${oversizedFile.name}`); + return; + } + + setErrorMessage(null); + handleChange(selectedFiles); }; + return ( Date: Tue, 22 Oct 2024 16:26:08 +0530 Subject: [PATCH 2/6] -Added function to open the file in new tab -Added the view and Download button -Reframed the error message --- src/modules/details/components/ImageTag.tsx | 127 ++++++++---------- .../details/components/MediaButton.tsx | 23 ++++ src/modules/details/components/styles.scss | 10 ++ src/modules/details/type.ts | 4 + src/modules/shared/UploadBucket.tsx | 2 +- 5 files changed, 91 insertions(+), 75 deletions(-) create mode 100644 src/modules/details/components/MediaButton.tsx create mode 100644 src/modules/details/components/styles.scss diff --git a/src/modules/details/components/ImageTag.tsx b/src/modules/details/components/ImageTag.tsx index 744ed29..313b78e 100644 --- a/src/modules/details/components/ImageTag.tsx +++ b/src/modules/details/components/ImageTag.tsx @@ -1,88 +1,67 @@ import { CircularProgress } from '@mui/material'; -import { isLabelWithInternallyDisabledControl } from '@testing-library/user-event/dist/utils'; -import { s3GetPresignedUrl} from 'apis/utils/mediaUpload/awsmedia'; -import Loader from 'modules/Auth/components/Loader'; import { useEffect, useState } from 'react'; +import axios from 'axios'; +import { s3GetPresignedUrl } from 'apis/utils/mediaUpload/awsmedia'; +import { MediaS3Tagparams } from '../type'; +import MediaButton from './MediaButton'; -export const MediaS3Tag = ({ path }: { path: string }) => { +export const MediaS3Tag = ({ path }: MediaS3Tagparams) => { const [srcFile, setSrcFile] = useState(); - const [isLoading, setIsLoading] = useState(false); - const [fileType, setFileType] = useState(); - + const [isLoading, setIsLoading] = useState(false); + useEffect(() => { - setIsLoading(true); - s3GetPresignedUrl(path) - .then((assetUrl) => { - setIsLoading(false); + const fetchPresignedUrl = async () => { + setIsLoading(true); + try { + const assetUrl = await s3GetPresignedUrl(path); setSrcFile(assetUrl); - const baseUrl = assetUrl.split('?')[0]; - const extension = baseUrl.split('.').pop()?.toLowerCase(); - - if (extension === 'pdf') { - setFileType('pdf'); - } else if (['jpg', 'jpeg', 'png', 'gif'].includes(extension || '')) { - setFileType('image'); - } else if (['xls', 'xlsx'].includes(extension)) { - setFileType('excel'); - } else if (['mp4', 'webm', 'ogg'].includes(extension)) { - setFileType('video'); - } else { - setFileType('unsupported'); - } - }) - .catch((e) => { - console.log('unable to fetch', e); + } catch (e) { + console.log('Unable to fetch:', e); + } finally { setIsLoading(false); - }); + } + }; + + fetchPresignedUrl(); }, [path]); + const handleDownload = async () => { + if (srcFile) { + try { + const response = await axios.get(srcFile, { responseType: 'blob' }); + const blob = new Blob([response.data]); + const downloadUrl = window.URL.createObjectURL(blob); + const link = document.createElement('a'); + link.href = downloadUrl; + link.download = path.split('/').pop() || 'download'; + link.click(); + window.URL.revokeObjectURL(downloadUrl); + } catch (error) { + console.error('Download failed:', error); + } + } + }; + + const handleView = () => { + if (srcFile) { + window.open(srcFile, '_blank'); + } + }; + if (isLoading) { return ; } - if (fileType === 'pdf') { - return ( - PDF Thumbnail window.open(srcFile, '_blank')} - style={{ cursor: 'pointer' }} - /> - ); - } else if (fileType === 'image') { - return ( - File - ); - } else if (fileType === 'excel') { - return ( - Excel Thumbnail window.open(srcFile, '_blank')} - style={{ cursor: 'pointer' }} - /> - ); - } else if (fileType === 'video') { - const videoType = srcFile?.split('.').pop()?.toLowerCase() === 'mp4' ? 'video/mp4' : 'video/webm'; - return ( - - ); - } else { - return

Unsupported file type

; - } + return ( +
+ {srcFile ? ( +
+ + +
+ ) : ( +

Unable to load file

+ )} +
+ ); }; diff --git a/src/modules/details/components/MediaButton.tsx b/src/modules/details/components/MediaButton.tsx new file mode 100644 index 0000000..aa59cb3 --- /dev/null +++ b/src/modules/details/components/MediaButton.tsx @@ -0,0 +1,23 @@ +import { Button } from '@mui/material'; +import { Visibility as VisibilityIcon } from '@mui/icons-material'; +import { ReactNode } from 'react'; +import './styles.scss'; + +interface MediaButtonProps { + handleFunction: () => void; + children: ReactNode; +} + +const MediaButton = ({ handleFunction, children }: MediaButtonProps) => { + return ( + + ); +}; +export default MediaButton; diff --git a/src/modules/details/components/styles.scss b/src/modules/details/components/styles.scss new file mode 100644 index 0000000..6c02205 --- /dev/null +++ b/src/modules/details/components/styles.scss @@ -0,0 +1,10 @@ +.custom-button{ + background-color: rgb(211, 211, 211) !important; + color: #000; + margin: 5px; + border-radius: 16px; +} + +.custom-button:hover { + background-color: rgb(169, 169, 169) !important; +} diff --git a/src/modules/details/type.ts b/src/modules/details/type.ts index 4c2f4df..13a3fe9 100644 --- a/src/modules/details/type.ts +++ b/src/modules/details/type.ts @@ -93,3 +93,7 @@ export interface IProgressTicketParams { id: number; setOpenEdit: (value: React.SetStateAction) => void; } + +export interface MediaS3Tagparams { + path: string; +} diff --git a/src/modules/shared/UploadBucket.tsx b/src/modules/shared/UploadBucket.tsx index 8c25a5a..9d3d53f 100644 --- a/src/modules/shared/UploadBucket.tsx +++ b/src/modules/shared/UploadBucket.tsx @@ -38,7 +38,7 @@ export const UploadBucket = ({ const oversizedFile = selectedFiles.find((file) => file.size > MAX_FILE_SIZE); if (oversizedFile) { - setErrorMessage(`File size exceeds limit: ${oversizedFile.name}`); + setErrorMessage(`File exceeds size limit: ${oversizedFile.name}`); return; } From 3c06839d8cd924145bc6122c739bb114ee3e2eb4 Mon Sep 17 00:00:00 2001 From: Smokashi23 Date: Tue, 22 Oct 2024 16:30:19 +0530 Subject: [PATCH 3/6] -Removed the unnecessary image files --- public/images/pdf.png | Bin 13096 -> 0 bytes public/images/play.png | Bin 22789 -> 0 bytes public/images/sheets.png | Bin 6766 -> 0 bytes 3 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 public/images/pdf.png delete mode 100644 public/images/play.png delete mode 100644 public/images/sheets.png diff --git a/public/images/pdf.png b/public/images/pdf.png deleted file mode 100644 index 4154a4feb0601048b98cb27d40bb4d611e14bfb4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13096 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

|%*?2#9U%rD#*{i` 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 N+|V`BDbccz_#dTbl6e3C diff --git a/public/images/sheets.png b/public/images/sheets.png deleted file mode 100644 index e95f6848a95b28818b546a937d410c69f5bd8dcb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6766 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 P5&Uhna Date: Fri, 25 Oct 2024 20:02:50 +0530 Subject: [PATCH 4/6] - Added the download icon for download button -Used the usequery to fetch image --- src/modules/details/components/ImageTag.tsx | 33 ++++++------------- .../details/components/MediaButton.tsx | 6 ++-- 2 files changed, 13 insertions(+), 26 deletions(-) diff --git a/src/modules/details/components/ImageTag.tsx b/src/modules/details/components/ImageTag.tsx index 313b78e..2b04306 100644 --- a/src/modules/details/components/ImageTag.tsx +++ b/src/modules/details/components/ImageTag.tsx @@ -1,29 +1,16 @@ -import { CircularProgress } from '@mui/material'; -import { useEffect, useState } from 'react'; import axios from 'axios'; +import { useQuery } from 'react-query'; +import { CircularProgress } from '@mui/material'; +import VisibilityIcon from '@mui/icons-material/Visibility'; +import DownloadIcon from '@mui/icons-material/Download'; import { s3GetPresignedUrl } from 'apis/utils/mediaUpload/awsmedia'; -import { MediaS3Tagparams } from '../type'; import MediaButton from './MediaButton'; +import { MediaS3Tagparams } from '../type'; export const MediaS3Tag = ({ path }: MediaS3Tagparams) => { - const [srcFile, setSrcFile] = useState(); - const [isLoading, setIsLoading] = useState(false); - - useEffect(() => { - const fetchPresignedUrl = async () => { - setIsLoading(true); - try { - const assetUrl = await s3GetPresignedUrl(path); - setSrcFile(assetUrl); - } catch (e) { - console.log('Unable to fetch:', e); - } finally { - setIsLoading(false); - } - }; - - fetchPresignedUrl(); - }, [path]); + const { data: srcFile, isLoading, error } = useQuery(['presignedUrl', path], () => s3GetPresignedUrl(path), { + enabled: !!path, + }); const handleDownload = async () => { if (srcFile) { @@ -56,8 +43,8 @@ export const MediaS3Tag = ({ path }: MediaS3Tagparams) => {

{srcFile ? (
- - + } /> + } />
) : (

Unable to load file

diff --git a/src/modules/details/components/MediaButton.tsx b/src/modules/details/components/MediaButton.tsx index aa59cb3..0751906 100644 --- a/src/modules/details/components/MediaButton.tsx +++ b/src/modules/details/components/MediaButton.tsx @@ -1,19 +1,19 @@ import { Button } from '@mui/material'; -import { Visibility as VisibilityIcon } from '@mui/icons-material'; import { ReactNode } from 'react'; import './styles.scss'; interface MediaButtonProps { handleFunction: () => void; children: ReactNode; + icon: React.ReactNode; } -const MediaButton = ({ handleFunction, children }: MediaButtonProps) => { +const MediaButton = ({ handleFunction, children, icon }: MediaButtonProps) => { return ( - - {errorMessage && ( - + + + + Maximum upload file size: 50MB + + + {errorMessage && ( + {errorMessage} )} {file?.map((item, index) => ( Date: Fri, 22 Nov 2024 12:52:22 +0530 Subject: [PATCH 6/6] Revert "-Added note for the upload fize size limit" This reverts commit 6341edf6c51e46eed84fbd1ec503bd2c2a48658f. --- src/modules/dashboard/dashboard.scss | 7 ---- src/modules/shared/UploadBucket.tsx | 48 ++++++++++++---------------- src/modules/shared/constants.ts | 4 +-- 3 files changed, 22 insertions(+), 37 deletions(-) diff --git a/src/modules/dashboard/dashboard.scss b/src/modules/dashboard/dashboard.scss index 222c368..d981f21 100644 --- a/src/modules/dashboard/dashboard.scss +++ b/src/modules/dashboard/dashboard.scss @@ -66,11 +66,4 @@ padding: 0.125rem 1rem; transition: all 0.2s ease; } -} - -.upload-button { - margin-top: 24px; - display: flex; - flex-direction: column; - align-items: flex-start; } \ No newline at end of file diff --git a/src/modules/shared/UploadBucket.tsx b/src/modules/shared/UploadBucket.tsx index 67ad1fa..9d3d53f 100644 --- a/src/modules/shared/UploadBucket.tsx +++ b/src/modules/shared/UploadBucket.tsx @@ -29,7 +29,7 @@ export const UploadBucket = ({ const selectedFiles = Array.from(files); const invalidFile = selectedFiles.find(file => !ALLOWED_TYPES.includes(file.type)); - + if (invalidFile) { setErrorMessage(`Invalid file type: ${invalidFile.name}`); return; @@ -42,8 +42,8 @@ export const UploadBucket = ({ return; } - setErrorMessage(null); - handleChange(selectedFiles); + setErrorMessage(null); + handleChange(selectedFiles); }; return ( @@ -51,40 +51,32 @@ export const UploadBucket = ({ { - const files = e.target.files; - if (files && files.length > 0) { - onChangeFile(files); - e.target.value = ''; + const files = e.target.files; + if (files && files.length > 0) { + onChangeFile(files); } }} /> - - - - Maximum upload file size: 50MB - - - {errorMessage && ( - + + {errorMessage && ( + {errorMessage} )} {file?.map((item, index) => (