Skip to content

Commit a1c99dc

Browse files
committed
fix: replaceFile and file uploader
1 parent b9e34c6 commit a1c99dc

14 files changed

Lines changed: 27 additions & 92 deletions

File tree

src/sections/replace-file/ReplaceFile.tsx

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { useEffect } from 'react'
22
import { useTranslation } from 'react-i18next'
33
import { Col, Row, Tabs } from '@iqss/dataverse-design-system'
4-
import { DatasetRepository } from '@/dataset/domain/repositories/DatasetRepository'
54
import { FileRepository } from '@/files/domain/repositories/FileRepository'
65
import { useFile } from '../file/useFile'
76
import { useLoading } from '../../shared/contexts/loading/LoadingContext'
@@ -14,7 +13,6 @@ import styles from './ReplaceFile.module.scss'
1413

1514
interface ReplaceFileProps {
1615
fileRepository: FileRepository
17-
datasetRepository: DatasetRepository
1816
fileIdFromParams: number
1917
datasetPidFromParams: string
2018
datasetVersionFromParams: string
@@ -29,7 +27,6 @@ export enum ReplaceFileReferrer {
2927

3028
export const ReplaceFile = ({
3129
fileRepository,
32-
datasetRepository,
3330
fileIdFromParams,
3431
datasetPidFromParams,
3532
datasetVersionFromParams,
@@ -81,7 +78,6 @@ export const ReplaceFile = ({
8178
<div className={styles.tab_container}>
8279
<FileUploader
8380
fileRepository={fileRepository}
84-
datasetRepository={datasetRepository}
8581
datasetPersistentId={datasetPidFromParams}
8682
storageType="S3"
8783
operationType={OperationType.REPLACE_FILE}

src/sections/replace-file/ReplaceFileFactory.tsx

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
import { ReactElement } from 'react'
22
import { useSearchParams } from 'react-router-dom'
33
import { FileJSDataverseRepository } from '@/files/infrastructure/FileJSDataverseRepository'
4-
import { DatasetJSDataverseRepository } from '@/dataset/infrastructure/repositories/DatasetJSDataverseRepository'
54
import { ReplaceFile, ReplaceFileReferrer } from './ReplaceFile'
65
import { QueryParamKey } from '../Route.enum'
76
import { searchParamVersionToDomainVersion } from '@/router'
87

98
const fileRepository = new FileJSDataverseRepository()
10-
const datasetRepository = new DatasetJSDataverseRepository()
119

1210
export class ReplaceFileFactory {
1311
static create(): ReactElement {
@@ -39,7 +37,6 @@ function ReplaceFileWithParams() {
3937
return (
4038
<ReplaceFile
4139
fileRepository={fileRepository}
42-
datasetRepository={datasetRepository}
4340
fileIdFromParams={fileId}
4441
datasetPidFromParams={datasetId}
4542
datasetVersionFromParams={datasetVersionNumber}

src/sections/shared/file-uploader/FileUploader.tsx

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { File as FileModel } from '@/files/domain/models/File'
22
import { FileRepository } from '@/files/domain/repositories/FileRepository'
33
import { DatasetUploadLimits } from '@/dataset/domain/models/DatasetUploadLimits'
4-
import { DatasetRepository } from '@/dataset/domain/repositories/DatasetRepository'
54
import { ReplaceFileReferrer } from '@/sections/replace-file/ReplaceFile'
65
import { FileUploaderProvider } from './context/FileUploaderContext'
76
import { useGetFixityAlgorithm } from './useGetFixityAlgorithm'
@@ -12,29 +11,21 @@ import FileUploaderPanel from './FileUploaderPanel'
1211
export type FileUploaderProps =
1312
| {
1413
fileRepository: FileRepository
15-
datasetRepository: DatasetRepository
1614
datasetPersistentId: string
1715
storageType: StorageType
1816
operationType: OperationType.REPLACE_FILE
1917
originalFile: FileModel
2018
referrer?: ReplaceFileReferrer
21-
fetchUploadLimits?: (
22-
datasetId: string | number,
23-
datasetRepository: DatasetRepository
24-
) => Promise<DatasetUploadLimits>
19+
fetchUploadLimits?: (datasetId: string | number) => Promise<DatasetUploadLimits>
2520
}
2621
| {
2722
fileRepository: FileRepository
28-
datasetRepository: DatasetRepository
2923
datasetPersistentId: string
3024
storageType: StorageType
3125
operationType: OperationType.ADD_FILES_TO_DATASET
3226
originalFile?: never
3327
referrer?: never
34-
fetchUploadLimits?: (
35-
datasetId: string | number,
36-
datasetRepository: DatasetRepository
37-
) => Promise<DatasetUploadLimits>
28+
fetchUploadLimits?: (datasetId: string | number) => Promise<DatasetUploadLimits>
3829
}
3930

4031
export type StorageType = 'S3'
@@ -49,7 +40,6 @@ export enum OperationType {
4940

5041
export const FileUploader = ({
5142
fileRepository,
52-
datasetRepository,
5343
datasetPersistentId,
5444
storageType,
5545
operationType,
@@ -81,7 +71,6 @@ export const FileUploader = ({
8171
<FileUploaderProvider initialConfig={initialConfig}>
8272
<FileUploaderPanel
8373
fileRepository={fileRepository}
84-
datasetRepository={datasetRepository}
8574
datasetPersistentId={datasetPersistentId}
8675
fetchUploadLimits={fetchUploadLimits}
8776
referrer={referrer}

src/sections/shared/file-uploader/FileUploaderPanel.tsx

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import { Stack } from '@iqss/dataverse-design-system'
77
import { FileRepository } from '@/files/domain/repositories/FileRepository'
88
import { QueryParamKey, Route } from '@/sections/Route.enum'
99
import { DatasetNonNumericVersionSearchParam } from '@/dataset/domain/models/Dataset'
10-
import { DatasetRepository } from '@/dataset/domain/repositories/DatasetRepository'
1110
import { ReplaceFileReferrer } from '@/sections/replace-file/ReplaceFile'
1211
import { useFileUploaderContext } from './context/FileUploaderContext'
1312
import FileUploadInput from './file-upload-input/FileUploadInput'
@@ -17,18 +16,13 @@ import { DatasetUploadLimits } from '@/dataset/domain/models/DatasetUploadLimits
1716

1817
interface FileUploaderPanelProps {
1918
fileRepository: FileRepository
20-
datasetRepository: DatasetRepository
2119
datasetPersistentId: string
2220
referrer?: ReplaceFileReferrer
23-
fetchUploadLimits?: (
24-
datasetId: string | number,
25-
datasetRepository: DatasetRepository
26-
) => Promise<DatasetUploadLimits>
21+
fetchUploadLimits?: (datasetId: string | number) => Promise<DatasetUploadLimits>
2722
}
2823

2924
const FileUploaderPanel = ({
3025
fileRepository,
31-
datasetRepository,
3226
datasetPersistentId,
3327
referrer,
3428
fetchUploadLimits
@@ -112,7 +106,6 @@ const FileUploaderPanel = ({
112106
<Stack gap={4}>
113107
<FileUploadInput
114108
fileRepository={fileRepository}
115-
datasetRepository={datasetRepository}
116109
datasetPersistentId={datasetPersistentId}
117110
fetchUploadLimits={fetchUploadLimits}
118111
/>

src/sections/shared/file-uploader/file-upload-input/FileUploadInput.tsx

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import { FileRepository } from '@/files/domain/repositories/FileRepository'
99
import MimeTypeDisplay from '@/files/domain/models/FileTypeToFriendlyTypeMap'
1010
import { uploadFile } from '@/files/domain/useCases/uploadFile'
1111
import { DatasetUploadLimits } from '@/dataset/domain/models/DatasetUploadLimits'
12-
import { DatasetRepository } from '@/dataset/domain/repositories/DatasetRepository'
1312
import { useFileUploaderContext } from '../context/FileUploaderContext'
1413
import { FileUploadState, FileUploadStatus } from '../context/fileUploaderReducer'
1514
import { OperationType } from '../FileUploader'
@@ -20,12 +19,8 @@ import { useUploadLimit } from './useUploadLimit'
2019

2120
type FileUploadInputProps = {
2221
fileRepository: FileRepository
23-
datasetRepository: DatasetRepository
2422
datasetPersistentId: string
25-
fetchUploadLimits?: (
26-
datasetId: string | number,
27-
datasetRepository: DatasetRepository
28-
) => Promise<DatasetUploadLimits>
23+
fetchUploadLimits?: (datasetId: string | number) => Promise<DatasetUploadLimits>
2924
}
3025

3126
const limit = 6
@@ -35,7 +30,6 @@ const maxFilesPerUpload = 1000
3530

3631
const FileUploadInput = ({
3732
fileRepository,
38-
datasetRepository,
3933
datasetPersistentId,
4034
fetchUploadLimits
4135
}: FileUploadInputProps) => {
@@ -59,7 +53,7 @@ const FileUploadInput = ({
5953
const inputRef = useRef<HTMLInputElement>(null)
6054

6155
const [isDragging, setIsDragging] = useState(false)
62-
const { uploadLimit } = useUploadLimit(datasetPersistentId, datasetRepository, fetchUploadLimits)
56+
const { uploadLimit } = useUploadLimit(datasetPersistentId, fetchUploadLimits)
6357

6458
const totalFiles = Object.keys(fileUploaderState.files).length
6559

src/sections/shared/file-uploader/file-upload-input/useUploadLimit.ts

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,39 @@
1-
import { useCallback, useEffect, useState } from 'react'
1+
import { useCallback, useEffect, useMemo, useState } from 'react'
22
import { ReadError } from '@iqss/dataverse-client-javascript'
33
import { FileSize, FileSizeUnit } from '@/files/domain/models/FileMetadata'
44
import { getDatasetUploadLimits } from '@/dataset/domain/useCases/getDatasetUploadLimits'
55
import { DatasetUploadLimits } from '@/dataset/domain/models/DatasetUploadLimits'
6-
import { DatasetRepository } from '@/dataset/domain/repositories/DatasetRepository'
6+
import { DatasetJSDataverseRepository } from '@/dataset/infrastructure/repositories/DatasetJSDataverseRepository'
77
import { JSDataverseReadErrorHandler } from '@/shared/helpers/JSDataverseReadErrorHandler'
88

99
interface UploadLimit {
1010
maxFilesAvailableToUploadFormatted?: string
1111
storageQuotaRemainingFormatted?: string
1212
}
1313

14+
const defaultDatasetRepository = new DatasetJSDataverseRepository()
15+
1416
export function useUploadLimit(
1517
datasetPersistentId: string,
16-
datasetRepository: DatasetRepository,
17-
fetchUploadLimits: (
18-
datasetId: string | number,
19-
datasetRepository: DatasetRepository
20-
) => Promise<DatasetUploadLimits> = getDatasetUploadLimits
18+
fetchUploadLimits?: (datasetId: string | number) => Promise<DatasetUploadLimits>
2119
) {
2220
const [uploadLimit, setUploadLimit] = useState<UploadLimit>({})
2321
const [isLoadingUploadLimits, setIsLoadingUploadLimits] = useState<boolean>(true)
2422
const [errorUploadLimits, setErrorUploadLimits] = useState<string | null>(null)
2523

24+
const fetcher = useMemo<(datasetId: string | number) => Promise<DatasetUploadLimits>>(
25+
() =>
26+
fetchUploadLimits ??
27+
((datasetId) => getDatasetUploadLimits(datasetId, defaultDatasetRepository)),
28+
[fetchUploadLimits]
29+
)
30+
2631
const fetchUploadLimitsCallback = useCallback(async () => {
2732
setIsLoadingUploadLimits(true)
2833
setErrorUploadLimits(null)
2934

3035
try {
31-
const limits = await fetchUploadLimits(datasetPersistentId, datasetRepository)
36+
const limits = await fetcher(datasetPersistentId)
3237

3338
if (Object.keys(limits).length === 0) {
3439
setUploadLimit({})
@@ -59,7 +64,7 @@ export function useUploadLimit(
5964
} finally {
6065
setIsLoadingUploadLimits(false)
6166
}
62-
}, [datasetPersistentId, datasetRepository, fetchUploadLimits])
67+
}, [datasetPersistentId, fetcher])
6368

6469
useEffect(() => {
6570
void fetchUploadLimitsCallback()

src/sections/upload-dataset-files/UploadDatasetFiles.tsx

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { useEffect } from 'react'
22
import { useTranslation } from 'react-i18next'
33
import { Tabs } from '@iqss/dataverse-design-system'
4-
import { DatasetRepository } from '@/dataset/domain/repositories/DatasetRepository'
54
import { FileRepository } from '../../files/domain/repositories/FileRepository'
65
import { useLoading } from '../../shared/contexts/loading/LoadingContext'
76
import { useDataset } from '../dataset/DatasetContext'
@@ -13,13 +12,9 @@ import styles from './UploadDatasetFiles.module.scss'
1312

1413
interface UploadDatasetFilesProps {
1514
fileRepository: FileRepository
16-
datasetRepository: DatasetRepository
1715
}
1816

19-
export const UploadDatasetFiles = ({
20-
fileRepository: fileRepository,
21-
datasetRepository
22-
}: UploadDatasetFilesProps) => {
17+
export const UploadDatasetFiles = ({ fileRepository: fileRepository }: UploadDatasetFilesProps) => {
2318
const { setIsLoading } = useLoading()
2419
const { dataset, isLoading: isLoadingDataset } = useDataset()
2520
const { t } = useTranslation('uploadDatasetFiles')
@@ -49,7 +44,6 @@ export const UploadDatasetFiles = ({
4944
<div className={styles.tab_container}>
5045
<FileUploader
5146
fileRepository={fileRepository}
52-
datasetRepository={datasetRepository}
5347
datasetPersistentId={dataset.persistentId}
5448
storageType="S3"
5549
operationType={OperationType.ADD_FILES_TO_DATASET}

src/sections/upload-dataset-files/UploadDatasetFilesFactory.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ function UploadDatasetFilesWithSearchParams() {
2525
<DatasetProvider
2626
repository={datasetRepository}
2727
searchParams={{ persistentId: persistentId, version: version }}>
28-
<UploadDatasetFiles fileRepository={fileRepository} datasetRepository={datasetRepository} />
28+
<UploadDatasetFiles fileRepository={fileRepository} />
2929
</DatasetProvider>
3030
)
3131
}

src/stories/replace-file/ReplaceFile.stories.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import { WithLayout } from '../WithLayout'
44
import { FileMockRepository } from '../file/FileMockRepository'
55
import { WithDataset } from '../dataset/WithDataset'
66
import { ReplaceFile } from '@/sections/replace-file/ReplaceFile'
7-
import { DatasetMockRepository } from '@/stories/dataset/DatasetMockRepository'
87
import { WithToasts } from '../WithToasts'
98

109
const meta: Meta<typeof ReplaceFile> = {
@@ -25,7 +24,6 @@ export const Default: Story = {
2524
render: () => (
2625
<ReplaceFile
2726
fileRepository={new FileMockRepository()}
28-
datasetRepository={new DatasetMockRepository()}
2927
fileIdFromParams={1}
3028
datasetPidFromParams="doi:10.5072/FK2/8YOKQI"
3129
datasetVersionFromParams=":draft"

src/stories/shared/file-uploader/FileUploadInput.stories.tsx

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import FileUploadInput from '@/sections/shared/file-uploader/file-upload-input/FileUploadInput'
22
import { FileUploadStatus } from '@/sections/shared/file-uploader/context/fileUploaderReducer'
33
import { OperationType } from '@/sections/shared/file-uploader/FileUploader'
4-
import { DatasetMockRepository } from '@/stories/dataset/DatasetMockRepository'
54
import { FileMockRepository } from '@/stories/file/FileMockRepository'
65
import { WithI18next } from '@/stories/WithI18next'
76
import { WithToasts } from '@/stories/WithToasts'
@@ -28,7 +27,6 @@ export const ReplaceMode: Story = {
2827
<FileUploadInput
2928
datasetPersistentId="doi:10.5072/FK2/8YOKQI"
3029
fileRepository={new FileMockRepository()}
31-
datasetRepository={new DatasetMockRepository()}
3230
/>
3331
</WithFileUploaderContext>
3432
)
@@ -41,7 +39,6 @@ export const AddMode: Story = {
4139
<FileUploadInput
4240
datasetPersistentId="doi:10.5072/FK2/8YOKQI"
4341
fileRepository={new FileMockRepository()}
44-
datasetRepository={new DatasetMockRepository()}
4542
/>
4643
</WithFileUploaderContext>
4744
)
@@ -54,7 +51,6 @@ export const WithUploadLimits: Story = {
5451
<FileUploadInput
5552
datasetPersistentId="doi:10.5072/FK2/8YOKQI"
5653
fileRepository={new FileMockRepository()}
57-
datasetRepository={new DatasetMockRepository()}
5854
fetchUploadLimits={() =>
5955
Promise.resolve({ numberOfFilesRemaining: 5, storageQuotaRemaining: 1024 * 1024 * 1024 })
6056
}
@@ -102,7 +98,6 @@ export const WithUploadingFiles: Story = {
10298
<FileUploadInput
10399
datasetPersistentId="doi:10.5072/FK2/8YOKQI"
104100
fileRepository={new FileMockRepository()}
105-
datasetRepository={new DatasetMockRepository()}
106101
/>
107102
</WithFileUploaderContext>
108103
)
@@ -131,7 +126,6 @@ export const WithFailedFile: Story = {
131126
<FileUploadInput
132127
datasetPersistentId="doi:10.5072/FK2/8YOKQI"
133128
fileRepository={new FileMockRepository()}
134-
datasetRepository={new DatasetMockRepository()}
135129
/>
136130
</WithFileUploaderContext>
137131
)

0 commit comments

Comments
 (0)