diff --git a/src/files/domain/repositories/FileRepository.ts b/src/files/domain/repositories/FileRepository.ts index 5d29b360b..9c2c30478 100644 --- a/src/files/domain/repositories/FileRepository.ts +++ b/src/files/domain/repositories/FileRepository.ts @@ -42,5 +42,10 @@ export interface FileRepository { abortController: AbortController, storageIdSetter: (storageId: string) => void ) => Promise - addUploadedFile: (datasetId: number | string, files: FileUploadState[]) => Promise + addUploadedFiles: (datasetId: number | string, files: FileUploadState[]) => Promise + addUploadedFile: ( + datasetId: number | string, + file: FileHolder, + storageId: string + ) => Promise } diff --git a/src/files/domain/useCases/addUploadedFiles.ts b/src/files/domain/useCases/addUploadedFiles.ts index 0eb512580..b1ef42065 100644 --- a/src/files/domain/useCases/addUploadedFiles.ts +++ b/src/files/domain/useCases/addUploadedFiles.ts @@ -8,7 +8,22 @@ export function addUploadedFiles( done: () => void ): void { fileRepository - .addUploadedFile(datasetId, files) + .addUploadedFiles(datasetId, files) + .catch((error: Error) => { + throw new Error(error.message) + }) + .finally(done) +} + +export function addUploadedFile( + fileRepository: FileRepository, + datasetId: number | string, + file: File, + storageId: string, + done: () => void +): void { + fileRepository + .addUploadedFile(datasetId, { file: file }, storageId) .catch((error: Error) => { throw new Error(error.message) }) diff --git a/src/files/infrastructure/FileJSDataverseRepository.ts b/src/files/infrastructure/FileJSDataverseRepository.ts index 52b0693da..89d6fea4b 100644 --- a/src/files/infrastructure/FileJSDataverseRepository.ts +++ b/src/files/infrastructure/FileJSDataverseRepository.ts @@ -301,36 +301,12 @@ export class FileJSDataverseRepository implements FileRepository { }) } - addUploadedFile(datasetId: number | string, files: FileUploadState[]): Promise { - const all: Promise[] = [] - files.forEach((file) => { - const f: FileHolder = { - file: { - lastModified: file.fileLastModified, - name: file.fileName, - webkitRelativePath: file.fileDir ? file.fileDir + '/' + file.fileName : file.fileName, - size: file.fileSize, - type: file.fileType, - arrayBuffer: function (): Promise { - throw new Error('Function not implemented.') - }, - slice: function ( - _start?: number | undefined, - _end?: number | undefined, - _contentType?: string | undefined - ): Blob { - throw new Error('Function not implemented.') - }, - stream: function (): ReadableStream { - throw new Error('Function not implemented.') - }, - text: function (): Promise { - throw new Error('Function not implemented.') - } - } - } - all.push(addUploadedFileToDataset.execute(datasetId, f.file, file.storageId as string)) - }) - return Promise.all(all) + addUploadedFiles(_datasetId: number | string, _files: FileUploadState[]): Promise { + // TODO: not yet implemented + return new Promise(() => {}) + } + + addUploadedFile(datasetId: number | string, file: FileHolder, storageId: string): Promise { + return addUploadedFileToDataset.execute(datasetId, file.file, storageId) } } diff --git a/src/sections/upload-dataset-files/UploadDatasetFiles.tsx b/src/sections/upload-dataset-files/UploadDatasetFiles.tsx index f8e23db07..7a21e05ed 100644 --- a/src/sections/upload-dataset-files/UploadDatasetFiles.tsx +++ b/src/sections/upload-dataset-files/UploadDatasetFiles.tsx @@ -9,7 +9,7 @@ import { FileUploader } from './FileUploader' import { FileUploadState, FileUploadTools } from '../../files/domain/models/FileUploadState' import { uploadFile } from '../../files/domain/useCases/uploadFile' import { UploadedFiles } from './uploaded-files-list/UploadedFiles' -import { addUploadedFiles } from '../../files/domain/useCases/addUploadedFiles' +import { addUploadedFile, addUploadedFiles } from '../../files/domain/useCases/addUploadedFiles' interface UploadDatasetFilesProps { fileRepository: FileRepository @@ -71,6 +71,13 @@ export const UploadDatasetFiles = ({ fileRepository: fileRepository }: UploadDat () => { setState(FileUploadTools.done(file, fileUploaderState)) fileUploadFinished(file) + addUploadedFile( + fileRepository, + dataset?.persistentId as string, + file, + FileUploadTools.get(file, fileUploaderState).storageId as string, + () => {} + ) }, () => { setState(FileUploadTools.failed(file, fileUploaderState)) diff --git a/src/stories/file/FileMockRepository.ts b/src/stories/file/FileMockRepository.ts index 9e369dfac..48e7064b9 100644 --- a/src/stories/file/FileMockRepository.ts +++ b/src/stories/file/FileMockRepository.ts @@ -107,10 +107,22 @@ export class FileMockRepository implements FileRepository { return res() } - addUploadedFile(_datasetId: number | string, _files: FileUploadState[]): Promise { + addUploadedFiles(_datasetId: number | string, _files: FileUploadState[]): Promise { return new Promise((resolve) => { setTimeout(() => { - resolve([]) + resolve() + }, FakerHelper.loadingTimout()) + }) + } + + addUploadedFile( + _datasetId: number | string, + _file: FileHolder, + _storageId: string + ): Promise { + return new Promise((resolve) => { + setTimeout(() => { + resolve() }, FakerHelper.loadingTimout()) }) }