Skip to content

Commit e3ca7df

Browse files
committed
feat: add standalone DVWebloader V2 uploader bundle
1 parent 48dd9ff commit e3ca7df

35 files changed

+2103
-265
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
# production
2323
/dist
24+
/dist-uploader
2425

2526
# storybook
2627
/storybook-static

CHANGELOG.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@ This changelog follows the principles of [Keep a Changelog](https://keepachangel
88

99
### Added
1010

11-
- Added the value entered by the user in the error messages for metadata field validation errors in EMAIL and URL type fields. For example, instead of showing “Point of Contact E-mail is not a valid email address.“, we now show “Point of Contact E-mail foo is not a valid email address.”
11+
- DVWebloader V2: A standalone file uploader build that reuses React file upload components, supporting S3 direct uploads with configurable tagging.
12+
- Shared file upload hooks (`useFileUploadState`, `useFileUploadOperations`) for better code reuse between the main SPA and standalone uploader.
13+
- Added the value entered by the user in the error messages for metadata field validation errors in EMAIL and URL type fields. For example, instead of showing "Point of Contact E-mail is not a valid email address.", we now show "Point of Contact E-mail foo is not a valid email address."
1214
- Contact Owner button in File Page.
1315
- Share button in File Page.
1416
- Link Collection and Link Dataset features.

package-lock.json

Lines changed: 45 additions & 47 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
"@dnd-kit/sortable": "8.0.0",
1919
"@dnd-kit/utilities": "3.2.2",
2020
"@faker-js/faker": "7.6.0",
21-
"@iqss/dataverse-client-javascript": "2.0.0-alpha.79",
21+
"@iqss/dataverse-client-javascript": "file:../dataverse-client-javascript",
2222
"@iqss/dataverse-design-system": "*",
2323
"@istanbuljs/nyc-config-typescript": "1.0.2",
2424
"@tanstack/react-table": "8.9.2",
@@ -64,6 +64,7 @@
6464
"scripts": {
6565
"start": "vite --base=/spa",
6666
"build": "tsc && vite build",
67+
"build-uploader": "vite build --config vite.config.uploader.ts && cp -r public/locales dist-uploader/ && cp src/standalone-uploader/dvwebloaderV2.html dist-uploader/",
6768
"build-keycloak-theme": "npm run build && keycloakify build",
6869
"preview": "vite preview",
6970
"lint": "npm run typecheck && npm run lint:eslint && npm run lint:stylelint && npm run lint:prettier",

src/files/domain/models/FixityAlgorithm.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
export enum FixityAlgorithm {
2+
NONE = 'NONE',
23
MD5 = 'MD5',
34
SHA1 = 'SHA-1',
45
SHA256 = 'SHA-256',

src/files/domain/useCases/addUploadedFiles.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,14 @@
11
import { UploadedFileDTO } from '@iqss/dataverse-client-javascript'
22
import { FileRepository } from '../repositories/FileRepository'
33

4+
/**
5+
* Minimal repository type for addUploadedFiles.
6+
* Only requires the addUploadedFiles method.
7+
*/
8+
type AddUploadedFilesRepository = Pick<FileRepository, 'addUploadedFiles'>
9+
410
export function addUploadedFiles(
5-
fileRepository: FileRepository,
11+
fileRepository: AddUploadedFilesRepository,
612
datasetId: number | string,
713
files: UploadedFileDTO[]
814
): Promise<void> {

src/files/domain/useCases/replaceFile.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,14 @@
11
import { UploadedFileDTO } from '@iqss/dataverse-client-javascript'
22
import { FileRepository } from '../repositories/FileRepository'
33

4+
/**
5+
* Minimal repository type for replaceFile.
6+
* Only requires the replace method.
7+
*/
8+
type ReplaceFileRepository = Pick<FileRepository, 'replace'>
9+
410
export function replaceFile(
5-
fileRepository: FileRepository,
11+
fileRepository: ReplaceFileRepository,
612
fileId: number | string,
713
newFile: UploadedFileDTO
814
): Promise<number> {

src/files/domain/useCases/uploadFile.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,13 @@
11
import { FileRepository } from '../repositories/FileRepository'
22

3+
/**
4+
* Minimal repository type for uploadFile.
5+
* Only requires the uploadFile method.
6+
*/
7+
type UploadFileRepository = Pick<FileRepository, 'uploadFile'>
8+
39
export function uploadFile(
4-
fileRepository: FileRepository,
10+
fileRepository: UploadFileRepository,
511
datasetId: number | string,
612
file: File,
713
done: () => void,

src/sections/Route.enum.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { ReplaceFileReferrer } from './replace-file/ReplaceFile'
2-
import { EditFileMetadataReferrer } from '@/sections/edit-file-metadata/EditFileMetadata'
1+
import { ReplaceFileReferrer } from './replace-file/ReplaceFileReferrer'
2+
import { EditFileMetadataReferrer } from '@/sections/edit-file-metadata/EditFileMetadataReferrer'
33

44
export enum Route {
55
HOME = '/',

src/sections/edit-file-metadata/EditFileMetadata.tsx

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,20 +12,18 @@ import {
1212
} from '@/sections/edit-file-metadata/EditFilesList'
1313
import { useLoading } from '../../shared/contexts/loading/LoadingContext'
1414
import { useFile } from '@/sections/file/useFile'
15+
import { EditFileMetadataReferrer } from './EditFileMetadataReferrer'
1516
import styles from './EditFileMetadata.module.scss'
1617

18+
// Re-export for backwards compatibility
19+
export { EditFileMetadataReferrer } from './EditFileMetadataReferrer'
20+
1721
interface EditFileMetadataProps {
1822
fileId: number
1923
fileRepository: FileRepository
2024
referrer: EditFileMetadataReferrer
2125
}
2226

23-
// From where the user is coming from
24-
export enum EditFileMetadataReferrer {
25-
DATASET = 'dataset',
26-
FILE = 'file'
27-
}
28-
2927
export const EditFileMetadata = ({ fileId, fileRepository, referrer }: EditFileMetadataProps) => {
3028
const { t: tEditFileMetadata } = useTranslation('editFileMetadata')
3129
const { t: tFiles } = useTranslation('files')

0 commit comments

Comments
 (0)