@@ -73,32 +73,7 @@ export const useFilesUploadDropzone = ({
7373 disabled : isDisabled ,
7474 accept,
7575 onDrop : checkFileSharingPermission ( async ( acceptedFiles : File [ ] , rejectedFiles : FileRejection [ ] ) => {
76- const newFiles = [ ...acceptedFiles , ...rejectedFiles . map ( file => file . file ) ] ;
77-
78- const validationResult = validateFiles ( {
79- newFiles,
80- currentFiles : files ,
81- maxSize : MAX_SIZE ,
82- maxFiles : MAX_FILES ,
83- } ) ;
84-
85- if ( ! validationResult . isValid ) {
86- const { error, invalidFiles} = validationResult as Extract < ValidationResult , { isValid : false } > ;
87- showFileDropzoneErrorModal ( {
88- title : error . title ,
89- message : error . message ,
90- invalidFiles,
91- } ) ;
92- return ;
93- }
94-
95- const transformedAcceptedFiles = transformAcceptedFiles ( acceptedFiles ) ;
96-
97- addFiles ( { conversationId : conversation . id , files : transformedAcceptedFiles } ) ;
98-
99- await attatchMetadataToFiles ( transformedAcceptedFiles ) ;
100-
101- await uploadFiles ( transformedAcceptedFiles ) ;
76+ await processIncomingFiles ( acceptedFiles , rejectedFiles , files , MAX_SIZE , MAX_FILES , conversation . id ) ;
10277 } ) ,
10378 onError : ( error : Error ) => {
10479 logger . error ( 'Dropping files failed' , error ) ;
@@ -116,6 +91,46 @@ export const useFilesUploadDropzone = ({
11691 } ,
11792 } ) ;
11893
94+ const processIncomingFiles = async (
95+ acceptedFiles : File [ ] ,
96+ rejectedFiles : FileRejection [ ] ,
97+ files : FileWithPreview [ ] ,
98+ maxSize : number ,
99+ maxFiles : number ,
100+ conversationId : string ,
101+ ) => {
102+ const newFiles = [ ...acceptedFiles , ...rejectedFiles . map ( file => file . file ) ] ;
103+
104+ const validationResult = validateFiles ( {
105+ newFiles,
106+ currentFiles : files ,
107+ maxSize,
108+ maxFiles,
109+ } ) ;
110+
111+ if ( ! validationResult . isValid ) {
112+ const { error, invalidFiles} = validationResult as Extract < ValidationResult , { isValid : false } > ;
113+ showFileDropzoneErrorModal ( {
114+ title : error . title ,
115+ message : error . message ,
116+ invalidFiles,
117+ } ) ;
118+ return ;
119+ }
120+
121+ const transformedAcceptedFiles = transformAcceptedFiles ( acceptedFiles ) ;
122+
123+ addFiles ( { conversationId, files : transformedAcceptedFiles } ) ;
124+
125+ await attatchMetadataToFiles ( transformedAcceptedFiles ) ;
126+
127+ await uploadFiles ( transformedAcceptedFiles ) ;
128+ } ;
129+
130+ const handlePastedFile = async ( file : File ) => {
131+ await processIncomingFiles ( [ file ] , [ ] , files , MAX_SIZE , MAX_FILES , conversation . id ) ;
132+ } ;
133+
119134 const uploadFile = async ( file : FileWithPreview ) => {
120135 // Temporary solution to handle the local development
121136 // TODO: remove this once we have a proper way to handle the domain per env
@@ -200,5 +215,5 @@ export const useFilesUploadDropzone = ({
200215 delayedOpen ( ) ;
201216 } ;
202217
203- return { getRootProps, getInputProps, openAllFilesView, openImageFilesView, isDragAccept} ;
218+ return { getRootProps, getInputProps, openAllFilesView, openImageFilesView, handlePastedFile , isDragAccept} ;
204219} ;
0 commit comments