From fd58aeaec843abc224eefbd47d7cd16425205708 Mon Sep 17 00:00:00 2001 From: Cheng Shi Date: Tue, 25 Feb 2025 10:47:59 -0500 Subject: [PATCH] fix: some adjustments, remove contactFactory & isCollection --- .../src/lib/components/alert/Alert.tsx | 3 +-- src/sections/collection/Collection.tsx | 9 ++++---- src/sections/collection/CollectionFactory.tsx | 3 +++ src/sections/dataset/Dataset.tsx | 4 ++++ src/sections/dataset/DatasetFactory.tsx | 5 +++- .../DatasetActionButtons.tsx | 9 ++++---- src/sections/shared/contact/ContactButton.tsx | 15 ++++++------ .../shared/contact/ContactFactory.tsx | 8 ------- src/stories/collection/Collection.stories.tsx | 9 ++++++++ src/stories/dataset/Dataset.stories.tsx | 12 ++++++++++ .../DatasetActionButtons.stories.tsx | 4 ++++ .../shared/contact/ContactMockRepository.ts | 13 +++++++++++ .../contact-modal/ContactModal.stories.tsx | 2 +- .../sections/collection/Collection.spec.tsx | 23 ++++++++++++++++--- .../sections/contact/ContactButton.spec.tsx | 12 +++++----- ...c.tsx => useSendFeedbacktoOwners.spec.tsx} | 4 ++-- .../sections/dataset/Dataset.spec.tsx | 21 +++++++++++++++-- 17 files changed, 116 insertions(+), 40 deletions(-) delete mode 100644 src/sections/shared/contact/ContactFactory.tsx create mode 100644 src/stories/shared/contact/ContactMockRepository.ts rename src/stories/shared/{ => contact}/contact-modal/ContactModal.stories.tsx (94%) rename tests/component/sections/contact/{useSubmitContact.spec.tsx => useSendFeedbacktoOwners.spec.tsx} (96%) diff --git a/packages/design-system/src/lib/components/alert/Alert.tsx b/packages/design-system/src/lib/components/alert/Alert.tsx index 5e8e12382..8fc1d2049 100644 --- a/packages/design-system/src/lib/components/alert/Alert.tsx +++ b/packages/design-system/src/lib/components/alert/Alert.tsx @@ -9,10 +9,9 @@ interface AlertProps { dismissible?: boolean customHeading?: string children?: ReactNode - onClose?: () => void } -function Alert({ variant, dismissible = true, customHeading, children, onClose }: AlertProps) { +function Alert({ variant, dismissible = true, customHeading, children }: AlertProps) { interface AlertHeadings { [key: string]: string } diff --git a/src/sections/collection/Collection.tsx b/src/sections/collection/Collection.tsx index 1069b8384..66267937e 100644 --- a/src/sections/collection/Collection.tsx +++ b/src/sections/collection/Collection.tsx @@ -18,7 +18,7 @@ import { ContactButton } from '@/sections/shared/contact/ContactButton' import { EditCollectionDropdown } from './edit-collection-dropdown/EditCollectionDropdown' import { FeaturedItems } from './featured-items/FeaturedItems' import styles from './Collection.module.scss' -import { ContactRepositoryFactory } from '@/sections/shared/contact/ContactFactory' +import { ContactRepository } from '@/contact/domain/repositories/ContactRepository' interface CollectionProps { collectionRepository: CollectionRepository @@ -28,6 +28,7 @@ interface CollectionProps { edited?: boolean collectionQueryParams: UseCollectionQueryParamsReturnType infiniteScrollEnabled?: boolean + contactRepository: ContactRepository } export function Collection({ @@ -36,11 +37,11 @@ export function Collection({ created, published, edited, - collectionQueryParams + collectionQueryParams, + contactRepository }: CollectionProps) { useScrollTop() const { t } = useTranslation('collection') - const contactRepository = ContactRepositoryFactory.create() const { collection, isLoading: isLoadingCollection } = useCollection( collectionRepository, collectionIdFromParams, @@ -98,7 +99,7 @@ export function Collection({
diff --git a/src/sections/collection/CollectionFactory.tsx b/src/sections/collection/CollectionFactory.tsx index eaf28195b..2403308e4 100644 --- a/src/sections/collection/CollectionFactory.tsx +++ b/src/sections/collection/CollectionFactory.tsx @@ -1,11 +1,13 @@ 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' const collectionRepository = new CollectionJSDataverseRepository() +const contactRepository = new ContactJSDataverseRepository() export class CollectionFactory { static create(): ReactElement { return @@ -32,6 +34,7 @@ function CollectionWithSearchParams() { published={published} edited={edited} infiniteScrollEnabled={INFINITE_SCROLL_ENABLED} + contactRepository={contactRepository} /> ) } diff --git a/src/sections/dataset/Dataset.tsx b/src/sections/dataset/Dataset.tsx index eee832876..7f33edfe8 100644 --- a/src/sections/dataset/Dataset.tsx +++ b/src/sections/dataset/Dataset.tsx @@ -27,12 +27,14 @@ import { QueryParamKey, Route } from '../Route.enum' import { MetadataBlockInfoRepository } from '../../metadata-block-info/domain/repositories/MetadataBlockInfoRepository' import { CollectionRepository } from '../../collection/domain/repositories/CollectionRepository' import { DatasetTerms } from '@/sections/dataset/dataset-terms/DatasetTerms' +import { ContactRepository } from '@/contact/domain/repositories/ContactRepository' interface DatasetProps { datasetRepository: DatasetRepository fileRepository: FileRepository metadataBlockInfoRepository: MetadataBlockInfoRepository collectionRepository: CollectionRepository + contactRepository: ContactRepository created?: boolean metadataUpdated?: boolean filesTabInfiniteScrollEnabled?: boolean @@ -45,6 +47,7 @@ export function Dataset({ fileRepository, metadataBlockInfoRepository, collectionRepository, + contactRepository, created, metadataUpdated, filesTabInfiniteScrollEnabled, @@ -129,6 +132,7 @@ export function Dataset({ datasetRepository={datasetRepository} collectionRepository={collectionRepository} dataset={dataset} + contactRepository={contactRepository} /> diff --git a/src/sections/dataset/DatasetFactory.tsx b/src/sections/dataset/DatasetFactory.tsx index 4caa3e5e0..f418c79bb 100644 --- a/src/sections/dataset/DatasetFactory.tsx +++ b/src/sections/dataset/DatasetFactory.tsx @@ -16,12 +16,13 @@ import { AlertProvider } from '../alerts/AlertProvider' import { searchParamVersionToDomainVersion } from '../../router' import { FILES_TAB_INFINITE_SCROLL_ENABLED } from './config' import { CollectionJSDataverseRepository } from '@/collection/infrastructure/repositories/CollectionJSDataverseRepository' +import { ContactJSDataverseRepository } from '@/contact/infrastructure/ContactJSDataverseRepository' const collectionRepository = new CollectionJSDataverseRepository() const datasetRepository = new DatasetJSDataverseRepository() const fileRepository = new FileJSDataverseRepository() const metadataBlockInfoRepository = new MetadataBlockInfoJSDataverseRepository() - +const contactRepository = new ContactJSDataverseRepository() const settingRepository = new SettingJSDataverseRepository() export class DatasetFactory { @@ -73,6 +74,7 @@ function DatasetWithSearchParams() { datasetRepository={datasetRepository} fileRepository={fileRepository} metadataBlockInfoRepository={metadataBlockInfoRepository} + contactRepository={contactRepository} filesTabInfiniteScrollEnabled={FILES_TAB_INFINITE_SCROLL_ENABLED} tab={tab} /> @@ -90,6 +92,7 @@ function DatasetWithSearchParams() { datasetRepository={datasetRepository} fileRepository={fileRepository} metadataBlockInfoRepository={metadataBlockInfoRepository} + contactRepository={contactRepository} created={created} publishInProgress={publishInProgress} metadataUpdated={metadataUpdated} diff --git a/src/sections/dataset/dataset-action-buttons/DatasetActionButtons.tsx b/src/sections/dataset/dataset-action-buttons/DatasetActionButtons.tsx index a415de81c..487b8a639 100644 --- a/src/sections/dataset/dataset-action-buttons/DatasetActionButtons.tsx +++ b/src/sections/dataset/dataset-action-buttons/DatasetActionButtons.tsx @@ -11,21 +11,22 @@ import { LinkDatasetButton } from './link-dataset-button/LinkDatasetButton' import { ShareDatasetButton } from './share-dataset-button/ShareDatasetButton' import styles from './DatasetActionButtons.module.scss' import { ContactButton } from '@/sections/shared/contact/ContactButton' -import { ContactRepositoryFactory } from '@/sections/shared/contact/ContactFactory' +import { ContactRepository } from '@/contact/domain/repositories/ContactRepository' interface DatasetActionButtonsProps { dataset: Dataset datasetRepository: DatasetRepository collectionRepository: CollectionRepository + contactRepository: ContactRepository } export function DatasetActionButtons({ dataset, datasetRepository, - collectionRepository + collectionRepository, + contactRepository }: DatasetActionButtonsProps) { const { t } = useTranslation('dataset') - const contactRepository = ContactRepositoryFactory.create() return ( @@ -46,8 +47,8 @@ export function DatasetActionButtons({ diff --git a/src/sections/shared/contact/ContactButton.tsx b/src/sections/shared/contact/ContactButton.tsx index 364334a91..396825131 100644 --- a/src/sections/shared/contact/ContactButton.tsx +++ b/src/sections/shared/contact/ContactButton.tsx @@ -7,14 +7,16 @@ import { ContactRepository } from '@/contact/domain/repositories/ContactReposito interface ContactButtonProps { toContactName: string - isCollection: boolean + contactObjectType: ContactObjectType id: string | number contactRepository: ContactRepository } +type ContactObjectType = 'collection' | 'dataset' + export const ContactButton = ({ toContactName, - isCollection, + contactObjectType, id, contactRepository }: ContactButtonProps) => { @@ -25,11 +27,9 @@ export const ContactButton = ({ return ( <> - {isCollection ? ( + {contactObjectType == 'collection' && ( <> - +