@@ -12,7 +12,7 @@ import { fileDeleteContract } from '@/lib/api/contracts/storage-transfer'
1212import { cn } from '@/lib/core/utils/cn'
1313import { getExtensionFromMimeType } from '@/lib/uploads/utils/file-utils'
1414import { useSubBlockValue } from '@/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/hooks/use-sub-block-value'
15- import { useWorkspaceFiles } from '@/hooks/queries/workspace-files'
15+ import { useUploadWorkspaceFile , useWorkspaceFiles } from '@/hooks/queries/workspace-files'
1616import { useWorkflowRegistry } from '@/stores/workflows/registry/store'
1717import { useWorkflowStore } from '@/stores/workflows/workflow/store'
1818
@@ -165,6 +165,8 @@ export function FileUpload({
165165 refetch : refetchWorkspaceFiles ,
166166 } = useWorkspaceFiles ( isPreview ? '' : workspaceId )
167167
168+ const uploadFileMutation = useUploadWorkspaceFile ( )
169+
168170 const value = isPreview ? previewValue : storeValue
169171
170172 /**
@@ -310,58 +312,24 @@ export function FileUpload({
310312
311313 for ( const file of validFiles ) {
312314 try {
313- const formData = new FormData ( )
314- formData . append ( 'file' , file )
315- formData . append ( 'context' , 'workspace' )
316-
317- if ( workspaceId ) {
318- formData . append ( 'workspaceId' , workspaceId )
319- }
320-
321- // boundary-raw-fetch: multipart/form-data upload (FileUpload boundary), incompatible with requestJson which JSON-stringifies bodies
322- const response = await fetch ( '/api/files/upload' , {
323- method : 'POST' ,
324- body : formData ,
315+ const data = await uploadFileMutation . mutateAsync ( {
316+ workspaceId,
317+ file,
318+ skipToast : true ,
325319 } )
326320
327- const data = await response . json ( )
328-
329- if ( ! response . ok ) {
330- const errorMessage =
331- data . message || data . error || `Failed to upload file: ${ response . status } `
332- uploadErrors . push ( `${ file . name } : ${ errorMessage } ` )
333-
334- setUploadError ( errorMessage )
335-
336- if ( data . isDuplicate || response . status === 409 ) {
337- setTimeout ( ( ) => setUploadError ( null ) , 5000 )
338- }
339- continue
340- }
341-
342- if ( data . success === false ) {
343- const errorMessage = data . error || 'Upload failed'
344- uploadErrors . push ( `${ file . name } : ${ errorMessage } ` )
345-
346- setUploadError ( errorMessage )
347-
348- if ( data . isDuplicate ) {
349- setTimeout ( ( ) => setUploadError ( null ) , 5000 )
350- }
351- continue
352- }
353-
354321 uploadedFiles . push ( {
355- name : file . name ,
356- path : data . file ? .url || data . url , // Workspace: data.file.url, Non-workspace: data.url
357- key : data . file ? .key || data . key , // Storage key for proper file access
358- size : file . size ,
359- type : file . type ,
322+ name : data . file . name ,
323+ path : data . file . url ,
324+ key : data . file . key ,
325+ size : data . file . size ,
326+ type : data . file . type ,
360327 } )
361328 } catch ( error ) {
362329 logger . error ( `Error uploading ${ file . name } :` , error )
363330 const errorMessage = error instanceof Error ? error . message : 'Unknown error'
364331 uploadErrors . push ( `${ file . name } : ${ errorMessage } ` )
332+ setUploadError ( errorMessage )
365333 }
366334 }
367335
0 commit comments