Skip to content

Commit 191c8ec

Browse files
committed
avoid datasetRepo props drilling
1 parent e284755 commit 191c8ec

120 files changed

Lines changed: 2690 additions & 2731 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ This changelog follows the principles of [Keep a Changelog](https://keepachangel
3333
- Added disclaimer text and custom popup text to Publish Dataset modal for better communication of the implications of publishing a dataset. The text can be configured through the runtime configuration.
3434
- Dataset page Terms tab title now depends on permissions: users with dataset update permission see `Terms and Guestbook`, and read-only users see `Terms`.
3535
- Avoided prop-drilling for collection repository, so used context to share epository instances.
36+
- Avoided prop-drilling for dataset repository, so used context to share repository instances. (#963)
3637

3738
### Fixed
3839

src/sections/account/AccountFactory.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,14 @@ import { AccountHelper } from './AccountHelper'
44
import { Account } from './Account'
55
import { UserJSDataverseRepository } from '@/users/infrastructure/repositories/UserJSDataverseRepository'
66
import { CollectionJSDataverseRepository } from '@/collection/infrastructure/repositories/CollectionJSDataverseRepository'
7+
import { DatasetJSDataverseRepository } from '@/dataset/infrastructure/repositories/DatasetJSDataverseRepository'
78
import { RoleJSDataverseRepository } from '@/roles/infrastructure/repositories/RoleJSDataverseRepository'
89
import { NotificationJSDataverseRepository } from '@/notifications/infrastructure/repositories/NotificationJSDataverseRepository'
910
import { RepositoriesProvider } from '@/shared/contexts/repositories/RepositoriesProvider'
1011

1112
const userRepository = new UserJSDataverseRepository()
1213
const collectionRepository = new CollectionJSDataverseRepository()
14+
const datasetRepository = new DatasetJSDataverseRepository()
1315
const roleRepository = new RoleJSDataverseRepository()
1416
const notificationRepository = new NotificationJSDataverseRepository()
1517

@@ -24,7 +26,9 @@ function AccountWithSearchParams() {
2426
const defaultActiveTabKey = AccountHelper.defineSelectedTabKey(searchParams)
2527

2628
return (
27-
<RepositoriesProvider collectionRepository={collectionRepository}>
29+
<RepositoriesProvider
30+
collectionRepository={collectionRepository}
31+
datasetRepository={datasetRepository}>
2832
<Account
2933
defaultActiveTabKey={defaultActiveTabKey}
3034
userRepository={userRepository}

src/sections/advanced-search/AdvancedSearchFactory.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
import { ReactElement } from 'react'
22
import { useParams, useSearchParams } from 'react-router-dom'
33
import { CollectionJSDataverseRepository } from '@/collection/infrastructure/repositories/CollectionJSDataverseRepository'
4+
import { DatasetJSDataverseRepository } from '@/dataset/infrastructure/repositories/DatasetJSDataverseRepository'
45
import { MetadataBlockInfoJSDataverseRepository } from '@/metadata-block-info/infrastructure/repositories/MetadataBlockInfoJSDataverseRepository'
56
import { CollectionItemsQueryParams } from '@/collection/domain/models/CollectionItemsQueryParams'
67
import { AdvancedSearch } from './AdvancedSearch'
78
import { RepositoriesProvider } from '@/shared/contexts/repositories/RepositoriesProvider'
89

910
const collectionRepository = new CollectionJSDataverseRepository()
1011
const metadataBlockInfoRepository = new MetadataBlockInfoJSDataverseRepository()
12+
const datasetRepository = new DatasetJSDataverseRepository()
1113

1214
export class AdvancedSearchFactory {
1315
static create(): ReactElement {
@@ -24,7 +26,9 @@ function AdvancedSearchWithSearchParams() {
2426
searchParams.get(CollectionItemsQueryParams.FILTER_QUERIES) ?? undefined
2527

2628
return (
27-
<RepositoriesProvider collectionRepository={collectionRepository}>
29+
<RepositoriesProvider
30+
collectionRepository={collectionRepository}
31+
datasetRepository={datasetRepository}>
2832
<AdvancedSearch
2933
collectionId={collectionId}
3034
metadataBlockInfoRepository={metadataBlockInfoRepository}

src/sections/collection/CollectionFactory.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { ReactElement } from 'react'
22
import { useLocation, useParams } from 'react-router-dom'
33
import { CollectionJSDataverseRepository } from '../../collection/infrastructure/repositories/CollectionJSDataverseRepository'
44
import { ContactJSDataverseRepository } from '@/contact/infrastructure/ContactJSDataverseRepository'
5+
import { DatasetJSDataverseRepository } from '@/dataset/infrastructure/repositories/DatasetJSDataverseRepository'
56
import { Collection } from './Collection'
67
import { INFINITE_SCROLL_ENABLED } from './config'
78
import { useGetCollectionQueryParams } from './useGetCollectionQueryParams'
@@ -10,6 +11,7 @@ import { RepositoriesProvider } from '@/shared/contexts/repositories/Repositorie
1011

1112
const collectionRepository = new CollectionJSDataverseRepository()
1213
const contactRepository = new ContactJSDataverseRepository()
14+
const datasetRepository = new DatasetJSDataverseRepository()
1315

1416
export class CollectionFactory {
1517
static create(): ReactElement {
@@ -32,7 +34,9 @@ function CollectionWithSearchParams() {
3234
Boolean(sessionStorage.getItem(ACCOUNT_CREATED_SESSION_STORAGE_KEY)) ?? false
3335

3436
return (
35-
<RepositoriesProvider collectionRepository={collectionRepository}>
37+
<RepositoriesProvider
38+
collectionRepository={collectionRepository}
39+
datasetRepository={datasetRepository}>
3640
<Collection
3741
collectionIdFromParams={collectionId}
3842
created={created}

src/sections/create-collection/CreateCollectionFactory.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
import { ReactElement } from 'react'
22
import { useParams } from 'react-router-dom'
33
import { CollectionJSDataverseRepository } from '../../collection/infrastructure/repositories/CollectionJSDataverseRepository'
4+
import { DatasetJSDataverseRepository } from '@/dataset/infrastructure/repositories/DatasetJSDataverseRepository'
45
import { CreateCollection } from './CreateCollection'
56
import { MetadataBlockInfoJSDataverseRepository } from '../../metadata-block-info/infrastructure/repositories/MetadataBlockInfoJSDataverseRepository'
67
import { RepositoriesProvider } from '@/shared/contexts/repositories/RepositoriesProvider'
78

89
const collectionRepository = new CollectionJSDataverseRepository()
910
const metadataBlockInfoRepository = new MetadataBlockInfoJSDataverseRepository()
11+
const datasetRepository = new DatasetJSDataverseRepository()
1012

1113
export class CreateCollectionFactory {
1214
static create(): ReactElement {
@@ -19,7 +21,9 @@ function CreateCollectionWithParams() {
1921
parentCollectionId: string
2022
}
2123
return (
22-
<RepositoriesProvider collectionRepository={collectionRepository}>
24+
<RepositoriesProvider
25+
collectionRepository={collectionRepository}
26+
datasetRepository={datasetRepository}>
2327
<CreateCollection
2428
parentCollectionId={parentCollectionId}
2529
metadataBlockInfoRepository={metadataBlockInfoRepository}

src/sections/create-dataset/CreateDataset.tsx

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { useEffect, useState } from 'react'
22
import { useTranslation } from 'react-i18next'
33
import { Alert } from '@iqss/dataverse-design-system'
4-
import { type DatasetRepository } from '../../dataset/domain/repositories/DatasetRepository'
54
import { type MetadataBlockInfoRepository } from '../../metadata-block-info/domain/repositories/MetadataBlockInfoRepository'
65
import { SeparationLine } from '../shared/layout/SeparationLine/SeparationLine'
76
import { HostCollectionForm } from './HostCollectionForm/HostCollectionForm'
@@ -21,14 +20,12 @@ import { TemplateRepository } from '@/templates/domain/repositories/TemplateRepo
2120
import { useCollectionRepositories } from '@/shared/contexts/repositories/RepositoriesProvider'
2221

2322
interface CreateDatasetProps {
24-
datasetRepository: DatasetRepository
2523
templateRepository: TemplateRepository
2624
metadataBlockInfoRepository: MetadataBlockInfoRepository
2725
collectionId: string
2826
}
2927

3028
export function CreateDataset({
31-
datasetRepository,
3229
templateRepository,
3330
metadataBlockInfoRepository,
3431
collectionId
@@ -123,7 +120,6 @@ export function CreateDataset({
123120
<DatasetMetadataForm
124121
mode="create"
125122
collectionId={collectionId}
126-
datasetRepository={datasetRepository}
127123
metadataBlockInfoRepository={metadataBlockInfoRepository}
128124
datasetTemplate={selectedTemplate ?? undefined}
129125
key={selectedTemplate ? selectedTemplate.id : 'no-template-selected'} // We use the template id as key to force remounting the form when the template changes

src/sections/create-dataset/CreateDatasetFactory.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,10 @@ function CreateDatasetWithSearchParams() {
2727
const { collectionId } = useParams<{ collectionId: string }>() as { collectionId: string }
2828

2929
return (
30-
<RepositoriesProvider collectionRepository={collectionRepository}>
30+
<RepositoriesProvider
31+
collectionRepository={collectionRepository}
32+
datasetRepository={datasetRepository}>
3133
<CreateDataset
32-
datasetRepository={datasetRepository}
3334
templateRepository={templateRepository}
3435
metadataBlockInfoRepository={metadataBlockInfoRepository}
3536
collectionId={collectionId}

src/sections/dataset/Dataset.tsx

Lines changed: 4 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ import { useNotImplementedModal } from '../not-implemented/NotImplementedModalCo
1818
import { NotImplementedModal } from '../not-implemented/NotImplementedModal'
1919
import { SeparationLine } from '../shared/layout/SeparationLine/SeparationLine'
2020
import { BreadcrumbsGenerator } from '../shared/hierarchy/BreadcrumbsGenerator'
21-
import { DatasetRepository } from '../../dataset/domain/repositories/DatasetRepository'
2221
import { DatasetAlerts } from './dataset-alerts/DatasetAlerts'
2322
import { DatasetFilesScrollable } from './dataset-files/DatasetFilesScrollable'
2423
import useCheckPublishCompleted from './useCheckPublishCompleted'
@@ -32,9 +31,9 @@ import { DatasetMetrics } from './dataset-metrics/DatasetMetrics'
3231
import { DatasetPublishingStatus } from '@/dataset/domain/models/Dataset'
3332
import { DataverseInfoRepository } from '@/info/domain/repositories/DataverseInfoRepository'
3433
import { useAnonymized } from './anonymized/AnonymizedContext'
34+
import { useDatasetRepositories } from '@/shared/contexts/repositories/RepositoriesProvider'
3535

3636
interface DatasetProps {
37-
datasetRepository: DatasetRepository
3837
fileRepository: FileRepository
3938
metadataBlockInfoRepository: MetadataBlockInfoRepository
4039
contactRepository: ContactRepository
@@ -45,7 +44,6 @@ interface DatasetProps {
4544
}
4645

4746
export function Dataset({
48-
datasetRepository,
4947
fileRepository,
5048
metadataBlockInfoRepository,
5149
contactRepository,
@@ -54,6 +52,7 @@ export function Dataset({
5452
publishInProgress,
5553
tab = 'files'
5654
}: DatasetProps) {
55+
const { datasetRepository } = useDatasetRepositories()
5756
const { setIsLoading } = useLoading()
5857
const { dataset, isLoading: isDatasetLoading } = useDataset()
5958
const { t } = useTranslation('dataset')
@@ -136,7 +135,6 @@ export function Dataset({
136135
thumbnail={dataset.thumbnail}
137136
version={dataset.version}
138137
datasetId={dataset.persistentId}
139-
datasetRepository={datasetRepository}
140138
/>
141139
<DatasetSummary
142140
summaryFields={dataset.summaryFields}
@@ -146,17 +144,9 @@ export function Dataset({
146144
/>
147145
</Col>
148146
<Col lg={3}>
149-
<DatasetActionButtons
150-
datasetRepository={datasetRepository}
151-
dataset={dataset}
152-
contactRepository={contactRepository}
153-
/>
147+
<DatasetActionButtons dataset={dataset} contactRepository={contactRepository} />
154148
{(!isCurrentVersionDeaccessioned || canUpdateDataset) && (
155-
<DatasetMetrics
156-
data-testid="dataset-metrics"
157-
datasetRepository={datasetRepository}
158-
datasetId={dataset.persistentId}
159-
/>
149+
<DatasetMetrics data-testid="dataset-metrics" datasetId={dataset.persistentId} />
160150
)}
161151
</Col>
162152
</Row>
@@ -168,7 +158,6 @@ export function Dataset({
168158
<Tabs.Tab eventKey="versions" title={t('Versions')}>
169159
<div className={styles['tab-container']}>
170160
<DatasetVersions
171-
datasetRepository={datasetRepository}
172161
datasetId={dataset.persistentId}
173162
currentVersionNumber={currentVersionNumber}
174163
canUpdateDataset={canUpdateDataset}
@@ -190,14 +179,12 @@ export function Dataset({
190179
datasetVersion={dataset.version}
191180
canUpdateDataset={canUpdateDataset}
192181
key={dataset.version.publishingStatus}
193-
datasetRepository={datasetRepository}
194182
/>
195183
) : (
196184
<DatasetFiles
197185
filesRepository={fileRepository}
198186
datasetPersistentId={dataset.persistentId}
199187
datasetVersion={dataset.version}
200-
datasetRepository={datasetRepository}
201188
/>
202189
)}
203190
</div>
@@ -230,7 +217,6 @@ export function Dataset({
230217
<Tabs.Tab eventKey="versions" title={t('Versions')}>
231218
<div className={styles['tab-container']}>
232219
<DatasetVersions
233-
datasetRepository={datasetRepository}
234220
datasetId={dataset.persistentId}
235221
currentVersionNumber={currentVersionNumber}
236222
canUpdateDataset={canUpdateDataset}

src/sections/dataset/DatasetFactory.tsx

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -80,13 +80,14 @@ function DatasetWithSearchParams() {
8080

8181
if (privateUrlToken) {
8282
return (
83-
<RepositoriesProvider collectionRepository={collectionRepository}>
83+
<RepositoriesProvider
84+
collectionRepository={collectionRepository}
85+
datasetRepository={datasetRepository}>
8486
<DatasetProvider
8587
repository={datasetRepository}
8688
searchParams={{ privateUrlToken: privateUrlToken }}
8789
isPublishing={publishInProgress}>
8890
<Dataset
89-
datasetRepository={datasetRepository}
9091
fileRepository={fileRepository}
9192
metadataBlockInfoRepository={metadataBlockInfoRepository}
9293
contactRepository={contactRepository}
@@ -100,13 +101,14 @@ function DatasetWithSearchParams() {
100101
}
101102

102103
return (
103-
<RepositoriesProvider collectionRepository={collectionRepository}>
104+
<RepositoriesProvider
105+
collectionRepository={collectionRepository}
106+
datasetRepository={datasetRepository}>
104107
<DatasetProvider
105108
repository={datasetRepository}
106109
searchParams={{ persistentId: persistentId, version: version }}
107110
isPublishing={publishInProgress}>
108111
<Dataset
109-
datasetRepository={datasetRepository}
110112
fileRepository={fileRepository}
111113
metadataBlockInfoRepository={metadataBlockInfoRepository}
112114
contactRepository={contactRepository}

src/sections/dataset/dataset-action-buttons/DatasetActionButtons.tsx

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { useTranslation } from 'react-i18next'
22
import { ButtonGroup } from '@iqss/dataverse-design-system'
33
import { Dataset, DatasetPublishingStatus } from '@/dataset/domain/models/Dataset'
4-
import { DatasetRepository } from '@/dataset/domain/repositories/DatasetRepository'
54
import { AccessDatasetMenu } from './access-dataset-menu/AccessDatasetMenu'
65
import { PublishDatasetMenu } from './publish-dataset-menu/PublishDatasetMenu'
76
import { SubmitForReviewButton } from './submit-for-review-button/SubmitForReviewButton'
@@ -14,15 +13,10 @@ import styles from './DatasetActionButtons.module.scss'
1413

1514
interface DatasetActionButtonsProps {
1615
dataset: Dataset
17-
datasetRepository: DatasetRepository
1816
contactRepository: ContactRepository
1917
}
2018

21-
export function DatasetActionButtons({
22-
dataset,
23-
datasetRepository,
24-
contactRepository
25-
}: DatasetActionButtonsProps) {
19+
export function DatasetActionButtons({ dataset, contactRepository }: DatasetActionButtonsProps) {
2620
const { t } = useTranslation('dataset')
2721

2822
const isCurrentVersionDeaccessioned =
@@ -42,10 +36,10 @@ export function DatasetActionButtons({
4236
license={dataset.license}
4337
customTerms={dataset.termsOfUse.customTerms}
4438
/>
45-
<PublishDatasetMenu dataset={dataset} datasetRepository={datasetRepository} />
39+
<PublishDatasetMenu dataset={dataset} />
4640
<SubmitForReviewButton dataset={dataset} />
47-
<EditDatasetMenu dataset={dataset} datasetRepository={datasetRepository} />
48-
<LinkAndUnlinkActions dataset={dataset} datasetRepository={datasetRepository} />
41+
<EditDatasetMenu dataset={dataset} />
42+
<LinkAndUnlinkActions dataset={dataset} />
4943
<ButtonGroup className={styles['contact-owner-and-share-group']}>
5044
<ContactButton
5145
toContactName={dataset.metadataBlocks[0].fields.title}

0 commit comments

Comments
 (0)