@@ -24,144 +24,145 @@ const FileUploader = ({ ownerId, accountId, className }: Props) => {
24
24
const [ files , setFiles ] = useState < File [ ] > ( [ ] ) ;
25
25
const [ uploadingFiles , setUploadingFiles ] = useState < Set < string > > ( new Set ( ) ) ;
26
26
27
- const onDrop = useCallback (
28
- async ( acceptedFiles : File [ ] ) => {
29
- console . log ( 'Files dropped:' , acceptedFiles . map ( f => ( {
30
- name : f . name ,
31
- size : f . size ,
32
- type : f . type ,
33
- lastModified : f . lastModified
34
- } ) ) ) ;
35
-
36
- for ( const file of acceptedFiles ) {
37
- if ( file . size > MAX_FILE_SIZE ) {
38
- console . log ( 'File too large:' , {
39
- name : file . name ,
40
- size : file . size ,
41
- maxSize : MAX_FILE_SIZE
42
- } ) ;
43
-
44
- toast ( {
45
- description : (
46
- < p className = "text-sm font-normal text-white" >
47
- < span className = "font-semibold" > { file . name } </ span > is too large.
48
- Max file size is 50MB.
49
- </ p >
50
- ) ,
51
- className : "bg-destructive" ,
52
- } ) ;
53
- continue ;
54
- }
27
+ const onDrop = useCallback ( ( acceptedFiles : File [ ] ) => {
28
+ handleFileDrop ( acceptedFiles ) . catch ( console . error ) ;
29
+ } , [ ] ) ;
30
+
31
+ const handleFileDrop = async ( acceptedFiles : File [ ] ) => {
32
+ console . log ( 'Files dropped:' , acceptedFiles . map ( f => ( {
33
+ name : f . name ,
34
+ size : f . size ,
35
+ type : f . type ,
36
+ lastModified : f . lastModified
37
+ } ) ) ) ;
38
+
39
+ for ( const file of acceptedFiles ) {
40
+ if ( file . size > MAX_FILE_SIZE ) {
41
+ console . log ( 'File too large:' , {
42
+ name : file . name ,
43
+ size : file . size ,
44
+ maxSize : MAX_FILE_SIZE
45
+ } ) ;
55
46
56
- setFiles ( ( prev ) => [ ...prev , file ] ) ;
57
- setUploadingFiles ( ( prev ) => new Set ( prev ) . add ( file . name ) ) ;
47
+ toast ( {
48
+ description : (
49
+ < p className = "text-sm font-normal text-white" >
50
+ < span className = "font-semibold" > { file . name } </ span > is too large.
51
+ Max file size is 50MB.
52
+ </ p >
53
+ ) ,
54
+ className : "bg-destructive" ,
55
+ } ) ;
56
+ continue ;
57
+ }
58
58
59
- console . log ( 'Starting upload for file:' , {
60
- name : file . name ,
61
- size : file . size ,
62
- type : file . type ,
63
- lastModified : file . lastModified
59
+ setFiles ( ( prev ) => [ ...prev , file ] ) ;
60
+ setUploadingFiles ( ( prev ) => new Set ( prev ) . add ( file . name ) ) ;
61
+
62
+ console . log ( 'Starting upload for file:' , {
63
+ name : file . name ,
64
+ size : file . size ,
65
+ type : file . type ,
66
+ lastModified : file . lastModified
67
+ } ) ;
68
+
69
+ try {
70
+ console . log ( 'Calling uploadFile function with:' , {
71
+ fileName : file . name ,
72
+ fileType : file . type ,
73
+ ownerId,
74
+ accountId,
75
+ path
76
+ } ) ;
77
+
78
+ const success = await uploadFile ( {
79
+ file,
80
+ ownerId,
81
+ accountId,
82
+ path : path || '/'
83
+ } ) ;
84
+
85
+ console . log ( 'Upload result:' , {
86
+ fileName : file . name ,
87
+ success,
88
+ fileInfo : {
89
+ size : file . size ,
90
+ type : file . type ,
91
+ lastModified : file . lastModified
92
+ }
64
93
} ) ;
94
+
95
+ if ( ! success ) {
96
+ throw new Error ( "Failed to upload file" ) ;
97
+ }
65
98
66
- try {
67
- console . log ( 'Calling uploadFile function with:' , {
68
- fileName : file . name ,
69
- fileType : file . type ,
70
- ownerId,
71
- accountId,
72
- path
73
- } ) ;
74
-
75
- const success = await uploadFile ( {
76
- file,
77
- ownerId,
78
- accountId,
79
- path : path || '/'
80
- } ) ;
81
-
82
- console . log ( 'Upload result:' , {
83
- fileName : file . name ,
84
- success,
99
+ toast ( {
100
+ description : (
101
+ < p className = "text-sm font-normal text-white" >
102
+ < span className = "font-semibold" > { file . name } </ span > uploaded successfully!
103
+ </ p >
104
+ ) ,
105
+ className : "bg-green-500" ,
106
+ } ) ;
107
+ } catch ( error : unknown ) {
108
+ let errorMessage = "Falha ao fazer upload do arquivo. Por favor, tente novamente." ;
109
+
110
+ if ( error instanceof Error ) {
111
+ console . error ( `Error uploading ${ file . name } :` , {
112
+ message : error . message ,
113
+ stack : error . stack ,
85
114
fileInfo : {
86
115
size : file . size ,
87
116
type : file . type ,
88
- lastModified : file . lastModified
89
- }
90
- } ) ;
91
-
92
- if ( ! success ) {
93
- throw new Error ( "Failed to upload file" ) ;
94
- }
95
-
96
- toast ( {
97
- description : (
98
- < p className = "text-sm font-normal text-white" >
99
- < span className = "font-semibold" > { file . name } </ span > uploaded successfully!
100
- </ p >
101
- ) ,
102
- className : "bg-green-500" ,
117
+ lastModified : file . lastModified ,
118
+ } ,
103
119
} ) ;
104
- } catch ( error : unknown ) {
105
- let errorMessage = "Falha ao fazer upload do arquivo. Por favor, tente novamente." ;
106
-
107
- if ( error instanceof Error ) {
108
- console . error ( `Error uploading ${ file . name } :` , {
109
- message : error . message ,
110
- stack : error . stack ,
111
- fileInfo : {
112
- size : file . size ,
113
- type : file . type ,
114
- lastModified : file . lastModified ,
115
- } ,
116
- } ) ;
117
- errorMessage = error . message ;
118
- } else {
119
- console . error ( `Unknown error uploading ${ file . name } :` , {
120
- error,
121
- fileInfo : {
122
- size : file . size ,
123
- type : file . type ,
124
- lastModified : file . lastModified ,
125
- } ,
126
- } ) ;
127
- }
128
-
129
- toast ( {
130
- description : (
131
- < p className = "text-sm font-normal text-white" >
132
- { errorMessage }
133
- </ p >
134
- ) ,
135
- className : "bg-destructive" ,
136
- } ) ;
137
- } finally {
138
- console . log ( 'Cleaning up file states:' , file . name ) ;
139
- setFiles ( ( prevFiles ) => prevFiles . filter ( ( f ) => f . name !== file . name ) ) ;
140
- setUploadingFiles ( ( prev ) => {
141
- const newSet = new Set ( prev ) ;
142
- newSet . delete ( file . name ) ;
143
- return newSet ;
120
+ errorMessage = error . message ;
121
+ } else {
122
+ console . error ( `Unknown error uploading ${ file . name } :` , {
123
+ error,
124
+ fileInfo : {
125
+ size : file . size ,
126
+ type : file . type ,
127
+ lastModified : file . lastModified ,
128
+ } ,
144
129
} ) ;
145
130
}
131
+
132
+ toast ( {
133
+ description : (
134
+ < p className = "text-sm font-normal text-white" >
135
+ { errorMessage }
136
+ </ p >
137
+ ) ,
138
+ className : "bg-destructive" ,
139
+ } ) ;
140
+ } finally {
141
+ console . log ( 'Cleaning up file states:' , file . name ) ;
142
+ setFiles ( ( prevFiles ) => prevFiles . filter ( ( f ) => f . name !== file . name ) ) ;
143
+ setUploadingFiles ( ( prev ) => {
144
+ const newSet = new Set ( prev ) ;
145
+ newSet . delete ( file . name ) ;
146
+ return newSet ;
147
+ } ) ;
146
148
}
147
- } ,
148
- [ ownerId , accountId , path , toast ]
149
- ) ;
149
+ }
150
+ } ;
150
151
151
152
const { getRootProps, getInputProps } = useDropzone ( {
152
153
onDrop,
153
154
maxSize : MAX_FILE_SIZE ,
154
155
accept : {
155
156
'image/*' : [ '.jpg' , '.jpeg' , '.png' , '.gif' , '.bmp' , '.webp' ] ,
156
- 'video/*' : [ '.mp4' , '.avi' , '.mov' , '.mkv' , '.webm '] ,
157
- 'audio/*' : [ '.mp3' , '.wav' , '.ogg' , '.flac' ] ,
157
+ 'video/*' : [ '.mp4' , '.avi' , '.mov' , '.wmv ' ] ,
158
+ 'audio/*' : [ '.mp3' , '.wav' , '.ogg' ] ,
158
159
'application/pdf' : [ '.pdf' ] ,
159
160
'application/msword' : [ '.doc' ] ,
160
161
'application/vnd.openxmlformats-officedocument.wordprocessingml.document' : [ '.docx' ] ,
161
- 'text/plain' : [ '.txt' ] ,
162
162
'application/vnd.ms-excel' : [ '.xls' ] ,
163
163
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' : [ '.xlsx' ] ,
164
- 'text/csv' : [ '.csv' ]
164
+ 'application/vnd.ms-powerpoint' : [ '.ppt' ] ,
165
+ 'application/vnd.openxmlformats-officedocument.presentationml.presentation' : [ '.pptx' ] ,
165
166
}
166
167
} ) ;
167
168
0 commit comments