diff --git a/apps/crn-frontend/src/network/teams/TeamManuscript.tsx b/apps/crn-frontend/src/network/teams/TeamManuscript.tsx index d9c87f1fd3..14713e84b3 100644 --- a/apps/crn-frontend/src/network/teams/TeamManuscript.tsx +++ b/apps/crn-frontend/src/network/teams/TeamManuscript.tsx @@ -16,6 +16,7 @@ import { } from '../../shared-state'; import { refreshTeamState, + useDiscussionById, useManuscriptById, usePostManuscript, usePutManuscript, @@ -50,6 +51,7 @@ const TeamManuscript: React.FC = ({ const getTeamSuggestions = useTeamSuggestions(); const getLabSuggestions = useLabSuggestions(); const getAuthorSuggestions = useAuthorSuggestions(); + const getDiscussion = useDiscussionById; const pushFromHere = usePushFromHere(); @@ -121,6 +123,7 @@ const TeamManuscript: React.FC = ({ })), ) } + getDiscussion={getDiscussion} title={manuscript?.title} firstAuthors={convertAuthorsToSelectOptions(manuscriptFirstAuthors)} correspondingAuthor={convertAuthorsToSelectOptions( diff --git a/packages/react-components/src/templates/ManuscriptForm.tsx b/packages/react-components/src/templates/ManuscriptForm.tsx index 87856b53b2..868c53300b 100644 --- a/packages/react-components/src/templates/ManuscriptForm.tsx +++ b/packages/react-components/src/templates/ManuscriptForm.tsx @@ -2,6 +2,7 @@ import { ApcCoverageOption, AuthorEmailField, AuthorSelectOption, + DiscussionDataObject, ManuscriptFileResponse, ManuscriptFileType, ManuscriptFormData, @@ -289,6 +290,7 @@ type ManuscriptFormProps = Omit< getAuthorSuggestions: NonNullable< ComponentProps['loadOptions'] >; + getDiscussion?: (id: string) => DiscussionDataObject | undefined; firstAuthors?: AuthorSelectOption[]; correspondingAuthor?: AuthorSelectOption[]; additionalAuthors?: AuthorSelectOption[]; @@ -328,22 +330,31 @@ const ManuscriptForm: React.FC = ({ getLabSuggestions, selectedLabs, getAuthorSuggestions, + getDiscussion, description, firstAuthors, correspondingAuthor, additionalAuthors, resubmitManuscript = false, }) => { - const getDefaultQuickCheckValue = (quickCheckDetails: string | undefined) => { + const getDefaultQuickCheckValue = (quickCheckId: string | undefined) => { const isEditing = !!title; if (isEditing) { - return quickCheckDetails ? 'No' : 'Yes'; + return quickCheckId ? 'No' : 'Yes'; } return undefined; }; + const getDefaultQuickCheckDetails = (quickCheckId: string | undefined) => { + if (quickCheckId && getDiscussion) { + const discussion = getDiscussion(quickCheckId); + return discussion?.message.text; + } + return undefined; + }; + const isEditMode = !!manuscriptId && !resubmitManuscript; const methods = useForm({ mode: 'onBlur', @@ -364,44 +375,51 @@ const ManuscriptForm: React.FC = ({ additionalFiles: additionalFiles || undefined, acknowledgedGrantNumber: getDefaultQuickCheckValue( - acknowledgedGrantNumberDetails?.message.text, + acknowledgedGrantNumberDetails?.id, ), asapAffiliationIncluded: getDefaultQuickCheckValue( - asapAffiliationIncludedDetails?.message.text, + asapAffiliationIncludedDetails?.id, ), manuscriptLicense: getDefaultQuickCheckValue( - manuscriptLicenseDetails?.message.text, + manuscriptLicenseDetails?.id, ), datasetsDeposited: getDefaultQuickCheckValue( - datasetsDepositedDetails?.message.text, - ), - codeDeposited: getDefaultQuickCheckValue( - codeDepositedDetails?.message.text, + datasetsDepositedDetails?.id, ), + codeDeposited: getDefaultQuickCheckValue(codeDepositedDetails?.id), protocolsDeposited: getDefaultQuickCheckValue( - protocolsDepositedDetails?.message.text, + protocolsDepositedDetails?.id, ), labMaterialsRegistered: getDefaultQuickCheckValue( - labMaterialsRegisteredDetails?.message.text, + labMaterialsRegisteredDetails?.id, ), availabilityStatement: getDefaultQuickCheckValue( - availabilityStatementDetails?.message.text, + availabilityStatementDetails?.id, + ), + acknowledgedGrantNumberDetails: getDefaultQuickCheckDetails( + acknowledgedGrantNumberDetails?.id, + ), + asapAffiliationIncludedDetails: getDefaultQuickCheckDetails( + asapAffiliationIncludedDetails?.id, + ), + manuscriptLicenseDetails: getDefaultQuickCheckDetails( + manuscriptLicenseDetails?.id, + ), + datasetsDepositedDetails: getDefaultQuickCheckDetails( + datasetsDepositedDetails?.id, + ), + codeDepositedDetails: getDefaultQuickCheckDetails( + codeDepositedDetails?.id, + ), + protocolsDepositedDetails: getDefaultQuickCheckDetails( + protocolsDepositedDetails?.id, + ), + labMaterialsRegisteredDetails: getDefaultQuickCheckDetails( + labMaterialsRegisteredDetails?.id, + ), + availabilityStatementDetails: getDefaultQuickCheckDetails( + availabilityStatementDetails?.id, ), - acknowledgedGrantNumberDetails: - acknowledgedGrantNumberDetails?.message.text || '', - asapAffiliationIncludedDetails: - asapAffiliationIncludedDetails?.message.text || '', - manuscriptLicenseDetails: - manuscriptLicenseDetails?.message.text || '', - datasetsDepositedDetails: - datasetsDepositedDetails?.message.text || '', - codeDepositedDetails: codeDepositedDetails?.message.text || '', - protocolsDepositedDetails: - protocolsDepositedDetails?.message.text || '', - labMaterialsRegisteredDetails: - labMaterialsRegisteredDetails?.message.text || '', - availabilityStatementDetails: - availabilityStatementDetails?.message.text || '', teams: selectedTeams || [], labs: selectedLabs || [], description: description || '', diff --git a/packages/react-components/src/templates/__tests__/ManuscriptForm.test.tsx b/packages/react-components/src/templates/__tests__/ManuscriptForm.test.tsx index 5b45f1e1d7..96ff74812c 100644 --- a/packages/react-components/src/templates/__tests__/ManuscriptForm.test.tsx +++ b/packages/react-components/src/templates/__tests__/ManuscriptForm.test.tsx @@ -10,6 +10,7 @@ import { ComponentProps } from 'react'; import { MemoryRouter, Route, Router, StaticRouter } from 'react-router-dom'; import { createMemoryHistory, History } from 'history'; import userEvent, { specialChars } from '@testing-library/user-event'; +import { createMessage } from '@asap-hub/fixtures'; import { AuthorResponse, AuthorSelectOption, @@ -202,10 +203,15 @@ test.each` fieldDetails: QuickCheckDetails; }) => { const onCreate = jest.fn(); + const getDiscussion = jest.fn(() => ({ + id: 'discussion-1', + message: createMessage('Explanation'), + })); const props = { ...defaultProps, [field]: 'No', - [fieldDetails]: { message: { text: 'Explanation' } }, + [fieldDetails]: { id: 'discussion-1' }, + getDiscussion, }; render(