MCPcopy Create free account
hub / github.com/untitleduico/react / processFiles

Function processFiles

components/application/file-upload/file-upload-base.tsx:127–182  ·  view source on GitHub ↗
(files: File[])

Source from the content-addressed store, hash-verified

125 };
126
127 const processFiles = (files: File[]): void => {
128 // Reset the invalid state when processing files.
129 setIsInvalid(false);
130
131 const acceptedFiles: File[] = [];
132 const unacceptedFiles: File[] = [];
133 const oversizedFiles: File[] = [];
134
135 // If multiple files are not allowed, only process the first file
136 const filesToProcess = allowsMultiple ? files : files.slice(0, 1);
137
138 filesToProcess.forEach((file) => {
139 // Check file size first
140 if (maxSize && file.size > maxSize) {
141 oversizedFiles.push(file);
142 return;
143 }
144
145 // Then check file type
146 if (isFileTypeAccepted(file)) {
147 acceptedFiles.push(file);
148 } else {
149 unacceptedFiles.push(file);
150 }
151 });
152
153 // Handle oversized files
154 if (oversizedFiles.length > 0 && typeof onSizeLimitExceed === "function") {
155 const dataTransfer = new DataTransfer();
156 oversizedFiles.forEach((file) => dataTransfer.items.add(file));
157
158 setIsInvalid(true);
159 onSizeLimitExceed(dataTransfer.files);
160 }
161
162 // Handle accepted files
163 if (acceptedFiles.length > 0 && typeof onDropFiles === "function") {
164 const dataTransfer = new DataTransfer();
165 acceptedFiles.forEach((file) => dataTransfer.items.add(file));
166 onDropFiles(dataTransfer.files);
167 }
168
169 // Handle unaccepted files
170 if (unacceptedFiles.length > 0 && typeof onDropUnacceptedFiles === "function") {
171 const unacceptedDataTransfer = new DataTransfer();
172 unacceptedFiles.forEach((file) => unacceptedDataTransfer.items.add(file));
173
174 setIsInvalid(true);
175 onDropUnacceptedFiles(unacceptedDataTransfer.files);
176 }
177
178 // Clear the input value to ensure the same file can be selected again
179 if (inputRef.current) {
180 inputRef.current.value = "";
181 }
182 };
183
184 const handleDrop = (event: React.DragEvent<HTMLDivElement>) => {

Callers 2

handleDropFunction · 0.85
handleInputFileChangeFunction · 0.85

Calls 1

isFileTypeAcceptedFunction · 0.85

Tested by

no test coverage detected