Skip to content
11 changes: 10 additions & 1 deletion src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,17 @@ import { Route } from './sections/Route.enum'
import { requireAppConfig } from './config'
import { ExternalToolsProvider } from './shared/contexts/external-tools/ExternalToolsProvider'
import { ExternalToolsJSDataverseRepository } from './externalTools/infrastructure/repositories/ExternalToolsJSDataverseRepository'
import { RepositoriesProvider } from './shared/contexts/repositories/RepositoriesProvider'
import { CollectionJSDataverseRepository } from './collection/infrastructure/repositories/CollectionJSDataverseRepository'
import { DatasetJSDataverseRepository } from './dataset/infrastructure/repositories/DatasetJSDataverseRepository'
import 'react-loading-skeleton/dist/skeleton.css'
import './assets/global.scss'
import './assets/react-toastify-custom.scss'
import './assets/swal-custom.scss'

const externalToolsRepository = new ExternalToolsJSDataverseRepository()
const collectionRepository = new CollectionJSDataverseRepository()
const datasetRepository = new DatasetJSDataverseRepository()

function App() {
const appConfig = requireAppConfig()
Expand All @@ -34,7 +39,11 @@ function App() {
<>
<AuthProvider authConfig={authConfig}>
<ExternalToolsProvider externalToolsRepository={externalToolsRepository}>
<Router />
<RepositoriesProvider
collectionRepository={collectionRepository}
datasetRepository={datasetRepository}>
<Router />
</RepositoriesProvider>
</ExternalToolsProvider>
</AuthProvider>
<ToastContainer position="top-right" autoClose={5000} pauseOnHover />
Expand Down
17 changes: 6 additions & 11 deletions src/sections/account/AccountFactory.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,10 @@ import { useSearchParams } from 'react-router-dom'
import { AccountHelper } from './AccountHelper'
import { Account } from './Account'
import { UserJSDataverseRepository } from '@/users/infrastructure/repositories/UserJSDataverseRepository'
import { CollectionJSDataverseRepository } from '@/collection/infrastructure/repositories/CollectionJSDataverseRepository'
import { RoleJSDataverseRepository } from '@/roles/infrastructure/repositories/RoleJSDataverseRepository'
import { NotificationJSDataverseRepository } from '@/notifications/infrastructure/repositories/NotificationJSDataverseRepository'
import { RepositoriesProvider } from '@/shared/contexts/repositories/RepositoriesProvider'

const userRepository = new UserJSDataverseRepository()
const collectionRepository = new CollectionJSDataverseRepository()
const roleRepository = new RoleJSDataverseRepository()
const notificationRepository = new NotificationJSDataverseRepository()

Expand All @@ -24,13 +21,11 @@ function AccountWithSearchParams() {
const defaultActiveTabKey = AccountHelper.defineSelectedTabKey(searchParams)

return (
<RepositoriesProvider collectionRepository={collectionRepository}>
<Account
defaultActiveTabKey={defaultActiveTabKey}
userRepository={userRepository}
roleRepository={roleRepository}
notificationRepository={notificationRepository}
/>
</RepositoriesProvider>
<Account
defaultActiveTabKey={defaultActiveTabKey}
userRepository={userRepository}
roleRepository={roleRepository}
notificationRepository={notificationRepository}
/>
)
}
15 changes: 5 additions & 10 deletions src/sections/advanced-search/AdvancedSearchFactory.tsx
Original file line number Diff line number Diff line change
@@ -1,12 +1,9 @@
import { ReactElement } from 'react'
import { useParams, useSearchParams } from 'react-router-dom'
import { CollectionJSDataverseRepository } from '@/collection/infrastructure/repositories/CollectionJSDataverseRepository'
import { MetadataBlockInfoJSDataverseRepository } from '@/metadata-block-info/infrastructure/repositories/MetadataBlockInfoJSDataverseRepository'
import { CollectionItemsQueryParams } from '@/collection/domain/models/CollectionItemsQueryParams'
import { AdvancedSearch } from './AdvancedSearch'
import { RepositoriesProvider } from '@/shared/contexts/repositories/RepositoriesProvider'

const collectionRepository = new CollectionJSDataverseRepository()
const metadataBlockInfoRepository = new MetadataBlockInfoJSDataverseRepository()

export class AdvancedSearchFactory {
Expand All @@ -24,12 +21,10 @@ function AdvancedSearchWithSearchParams() {
searchParams.get(CollectionItemsQueryParams.FILTER_QUERIES) ?? undefined

return (
<RepositoriesProvider collectionRepository={collectionRepository}>
<AdvancedSearch
collectionId={collectionId}
metadataBlockInfoRepository={metadataBlockInfoRepository}
collectionFilterQueries={collectionPageCurrentFilterQueries}
/>
</RepositoriesProvider>
<AdvancedSearch
collectionId={collectionId}
metadataBlockInfoRepository={metadataBlockInfoRepository}
collectionFilterQueries={collectionPageCurrentFilterQueries}
/>
)
}
21 changes: 8 additions & 13 deletions src/sections/collection/CollectionFactory.tsx
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
import { ReactElement } from 'react'
import { useLocation, useParams } from 'react-router-dom'
import { CollectionJSDataverseRepository } from '../../collection/infrastructure/repositories/CollectionJSDataverseRepository'
import { ContactJSDataverseRepository } from '@/contact/infrastructure/ContactJSDataverseRepository'
import { Collection } from './Collection'
import { INFINITE_SCROLL_ENABLED } from './config'
import { useGetCollectionQueryParams } from './useGetCollectionQueryParams'
import { ACCOUNT_CREATED_SESSION_STORAGE_KEY } from './AccountCreatedAlert'
import { RepositoriesProvider } from '@/shared/contexts/repositories/RepositoriesProvider'

const collectionRepository = new CollectionJSDataverseRepository()
const contactRepository = new ContactJSDataverseRepository()

export class CollectionFactory {
Expand All @@ -32,15 +29,13 @@ function CollectionWithSearchParams() {
Boolean(sessionStorage.getItem(ACCOUNT_CREATED_SESSION_STORAGE_KEY)) ?? false

return (
<RepositoriesProvider collectionRepository={collectionRepository}>
<Collection
collectionIdFromParams={collectionId}
created={created}
collectionQueryParams={collectionQueryParams}
accountCreated={accountCreated}
infiniteScrollEnabled={INFINITE_SCROLL_ENABLED}
contactRepository={contactRepository}
/>
</RepositoriesProvider>
<Collection
collectionIdFromParams={collectionId}
created={created}
collectionQueryParams={collectionQueryParams}
accountCreated={accountCreated}
infiniteScrollEnabled={INFINITE_SCROLL_ENABLED}
contactRepository={contactRepository}
/>
)
}
15 changes: 5 additions & 10 deletions src/sections/create-collection/CreateCollectionFactory.tsx
Original file line number Diff line number Diff line change
@@ -1,11 +1,8 @@
import { ReactElement } from 'react'
import { useParams } from 'react-router-dom'
import { CollectionJSDataverseRepository } from '../../collection/infrastructure/repositories/CollectionJSDataverseRepository'
import { CreateCollection } from './CreateCollection'
import { MetadataBlockInfoJSDataverseRepository } from '../../metadata-block-info/infrastructure/repositories/MetadataBlockInfoJSDataverseRepository'
import { RepositoriesProvider } from '@/shared/contexts/repositories/RepositoriesProvider'

const collectionRepository = new CollectionJSDataverseRepository()
const metadataBlockInfoRepository = new MetadataBlockInfoJSDataverseRepository()

export class CreateCollectionFactory {
Expand All @@ -19,12 +16,10 @@ function CreateCollectionWithParams() {
parentCollectionId: string
}
return (
<RepositoriesProvider collectionRepository={collectionRepository}>
<CreateCollection
parentCollectionId={parentCollectionId}
metadataBlockInfoRepository={metadataBlockInfoRepository}
key={parentCollectionId}
/>
</RepositoriesProvider>
<CreateCollection
parentCollectionId={parentCollectionId}
metadataBlockInfoRepository={metadataBlockInfoRepository}
key={parentCollectionId}
/>
)
}
4 changes: 0 additions & 4 deletions src/sections/create-dataset/CreateDataset.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { useEffect, useState } from 'react'
import { useTranslation } from 'react-i18next'
import { Alert } from '@iqss/dataverse-design-system'
import { type DatasetRepository } from '../../dataset/domain/repositories/DatasetRepository'
import { type MetadataBlockInfoRepository } from '../../metadata-block-info/domain/repositories/MetadataBlockInfoRepository'
import { SeparationLine } from '../shared/layout/SeparationLine/SeparationLine'
import { HostCollectionForm } from './HostCollectionForm/HostCollectionForm'
Expand All @@ -21,14 +20,12 @@ import { TemplateRepository } from '@/templates/domain/repositories/TemplateRepo
import { useCollectionRepositories } from '@/shared/contexts/repositories/RepositoriesProvider'

interface CreateDatasetProps {
datasetRepository: DatasetRepository
templateRepository: TemplateRepository
metadataBlockInfoRepository: MetadataBlockInfoRepository
collectionId: string
}

export function CreateDataset({
datasetRepository,
templateRepository,
metadataBlockInfoRepository,
collectionId
Expand Down Expand Up @@ -123,7 +120,6 @@ export function CreateDataset({
<DatasetMetadataForm
mode="create"
collectionId={collectionId}
datasetRepository={datasetRepository}
metadataBlockInfoRepository={metadataBlockInfoRepository}
datasetTemplate={selectedTemplate ?? undefined}
key={selectedTemplate ? selectedTemplate.id : 'no-template-selected'} // We use the template id as key to force remounting the form when the template changes
Expand Down
18 changes: 5 additions & 13 deletions src/sections/create-dataset/CreateDatasetFactory.tsx
Original file line number Diff line number Diff line change
@@ -1,17 +1,12 @@
import { ReactElement } from 'react'
import { useParams } from 'react-router-dom'
import { CreateDataset } from './CreateDataset'
import { DatasetJSDataverseRepository } from '../../dataset/infrastructure/repositories/DatasetJSDataverseRepository'
import { TemplateJSDataverseRepository } from '../../templates/infrastructure/repositories/TemplateJSDataverseRepository'
import { MetadataBlockInfoJSDataverseRepository } from '../../metadata-block-info/infrastructure/repositories/MetadataBlockInfoJSDataverseRepository'
import { NotImplementedModalProvider } from '../not-implemented/NotImplementedModalProvider'
import { CollectionJSDataverseRepository } from '../../collection/infrastructure/repositories/CollectionJSDataverseRepository'
import { RepositoriesProvider } from '@/shared/contexts/repositories/RepositoriesProvider'

const datasetRepository = new DatasetJSDataverseRepository()
const templateRepository = new TemplateJSDataverseRepository()
const metadataBlockInfoRepository = new MetadataBlockInfoJSDataverseRepository()
const collectionRepository = new CollectionJSDataverseRepository()

export class CreateDatasetFactory {
static create(): ReactElement {
Expand All @@ -27,13 +22,10 @@ function CreateDatasetWithSearchParams() {
const { collectionId } = useParams<{ collectionId: string }>() as { collectionId: string }

return (
<RepositoriesProvider collectionRepository={collectionRepository}>
<CreateDataset
datasetRepository={datasetRepository}
templateRepository={templateRepository}
metadataBlockInfoRepository={metadataBlockInfoRepository}
collectionId={collectionId}
/>
</RepositoriesProvider>
<CreateDataset
templateRepository={templateRepository}
metadataBlockInfoRepository={metadataBlockInfoRepository}
collectionId={collectionId}
/>
)
}
22 changes: 4 additions & 18 deletions src/sections/dataset/Dataset.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ import { useNotImplementedModal } from '../not-implemented/NotImplementedModalCo
import { NotImplementedModal } from '../not-implemented/NotImplementedModal'
import { SeparationLine } from '../shared/layout/SeparationLine/SeparationLine'
import { BreadcrumbsGenerator } from '../shared/hierarchy/BreadcrumbsGenerator'
import { DatasetRepository } from '../../dataset/domain/repositories/DatasetRepository'
import { DatasetAlerts } from './dataset-alerts/DatasetAlerts'
import { DatasetFilesScrollable } from './dataset-files/DatasetFilesScrollable'
import useCheckPublishCompleted from './useCheckPublishCompleted'
Expand All @@ -32,9 +31,9 @@ import { DatasetMetrics } from './dataset-metrics/DatasetMetrics'
import { DatasetPublishingStatus } from '@/dataset/domain/models/Dataset'
import { DataverseInfoRepository } from '@/info/domain/repositories/DataverseInfoRepository'
import { useAnonymized } from './anonymized/AnonymizedContext'
import { useDatasetRepositories } from '@/shared/contexts/repositories/RepositoriesProvider'

interface DatasetProps {
datasetRepository: DatasetRepository
fileRepository: FileRepository
metadataBlockInfoRepository: MetadataBlockInfoRepository
contactRepository: ContactRepository
Expand All @@ -45,7 +44,6 @@ interface DatasetProps {
}

export function Dataset({
datasetRepository,
fileRepository,
metadataBlockInfoRepository,
contactRepository,
Expand All @@ -54,6 +52,7 @@ export function Dataset({
publishInProgress,
tab = 'files'
}: DatasetProps) {
const { datasetRepository } = useDatasetRepositories()
const { setIsLoading } = useLoading()
const { dataset, isLoading: isDatasetLoading } = useDataset()
const { t } = useTranslation('dataset')
Expand Down Expand Up @@ -136,7 +135,6 @@ export function Dataset({
thumbnail={dataset.thumbnail}
version={dataset.version}
datasetId={dataset.persistentId}
datasetRepository={datasetRepository}
/>
<DatasetSummary
summaryFields={dataset.summaryFields}
Expand All @@ -146,17 +144,9 @@ export function Dataset({
/>
</Col>
<Col lg={3}>
<DatasetActionButtons
datasetRepository={datasetRepository}
dataset={dataset}
contactRepository={contactRepository}
/>
<DatasetActionButtons dataset={dataset} contactRepository={contactRepository} />
{(!isCurrentVersionDeaccessioned || canUpdateDataset) && (
<DatasetMetrics
data-testid="dataset-metrics"
datasetRepository={datasetRepository}
datasetId={dataset.persistentId}
/>
<DatasetMetrics data-testid="dataset-metrics" datasetId={dataset.persistentId} />
)}
</Col>
</Row>
Expand All @@ -168,7 +158,6 @@ export function Dataset({
<Tabs.Tab eventKey="versions" title={t('Versions')}>
<div className={styles['tab-container']}>
<DatasetVersions
datasetRepository={datasetRepository}
datasetId={dataset.persistentId}
currentVersionNumber={currentVersionNumber}
canUpdateDataset={canUpdateDataset}
Expand All @@ -189,14 +178,12 @@ export function Dataset({
datasetVersion={dataset.version}
canUpdateDataset={canUpdateDataset}
key={dataset.version.publishingStatus}
datasetRepository={datasetRepository}
/>
) : (
<DatasetFiles
filesRepository={fileRepository}
datasetPersistentId={dataset.persistentId}
datasetVersion={dataset.version}
datasetRepository={datasetRepository}
/>
)}
</div>
Expand Down Expand Up @@ -229,7 +216,6 @@ export function Dataset({
<Tabs.Tab eventKey="versions" title={t('Versions')}>
<div className={styles['tab-container']}>
<DatasetVersions
datasetRepository={datasetRepository}
datasetId={dataset.persistentId}
currentVersionNumber={currentVersionNumber}
canUpdateDataset={canUpdateDataset}
Expand Down
Loading
Loading