Skip to content

Commit f783c40

Browse files
authored
Merge pull request #321 from aevo98765/cp-pr5-release-1.0
Cherry Pick: Author information component duplication
2 parents 2690c68 + 2e105ad commit f783c40

File tree

6 files changed

+30
-126
lines changed

6 files changed

+30
-126
lines changed

src/components/Contribute/Knowledge/AuthorInformation/AuthorInformation.tsx renamed to src/components/Contribute/AuthorInformation.tsx

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,27 +5,37 @@ import { HelperText } from '@patternfly/react-core/dist/dynamic/components/Helpe
55
import { HelperTextItem } from '@patternfly/react-core/dist/dynamic/components/HelperText';
66
import ExclamationCircleIcon from '@patternfly/react-icons/dist/dynamic/icons/exclamation-circle-icon';
77
import { ValidatedOptions } from '@patternfly/react-core/dist/esm/helpers/constants';
8-
import { KnowledgeFormData } from '..';
9-
import { checkKnowledgeFormCompletion } from '../validation';
8+
import { checkSkillFormCompletion } from './Skill/validation';
9+
import { checkKnowledgeFormCompletion } from './Knowledge/validation';
10+
11+
export enum FormType {
12+
Knowledge,
13+
Skill
14+
}
1015

1116
interface Props {
17+
formType: FormType;
1218
reset: boolean;
13-
knowledgeFormData: KnowledgeFormData;
19+
formData: object;
1420
setDisableAction: React.Dispatch<React.SetStateAction<boolean>>;
1521
email: string;
1622
setEmail: React.Dispatch<React.SetStateAction<string>>;
1723
name: string;
1824
setName: React.Dispatch<React.SetStateAction<string>>;
1925
}
20-
const AuthorInformation: React.FC<Props> = ({ reset, knowledgeFormData, setDisableAction, email, setEmail, name, setName }) => {
26+
const AuthorInformation: React.FC<Props> = ({ formType, reset, formData, setDisableAction, email, setEmail, name, setName }) => {
2127
const [validEmail, setValidEmail] = useState<ValidatedOptions>();
2228
const [validName, setValidName] = useState<ValidatedOptions>();
2329

2430
const validateEmail = (email: string) => {
2531
const re = /\S+@\S+\.\S+/;
2632
if (re.test(email)) {
2733
setValidEmail(ValidatedOptions.success);
28-
setDisableAction(!checkKnowledgeFormCompletion(knowledgeFormData));
34+
if (formType === FormType.Knowledge) {
35+
setDisableAction(!checkKnowledgeFormCompletion(formData));
36+
return;
37+
}
38+
setDisableAction(!checkSkillFormCompletion(formData));
2939
return;
3040
}
3141
setDisableAction(true);
@@ -36,7 +46,11 @@ const AuthorInformation: React.FC<Props> = ({ reset, knowledgeFormData, setDisab
3646
const validateName = (name: string) => {
3747
if (name.length > 0) {
3848
setValidName(ValidatedOptions.success);
39-
setDisableAction(!checkKnowledgeFormCompletion(knowledgeFormData));
49+
if (formType === FormType.Knowledge) {
50+
setDisableAction(!checkKnowledgeFormCompletion(formData));
51+
return;
52+
}
53+
setDisableAction(!checkSkillFormCompletion(formData));
4054
return;
4155
}
4256
setDisableAction(true);

src/components/Contribute/Knowledge/index.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ import { ActionGroup } from '@patternfly/react-core/dist/dynamic/components/Form
77
import { Form } from '@patternfly/react-core/dist/dynamic/components/Form';
88
import { getGitHubUsername } from '../../../utils/github';
99
import { useSession } from 'next-auth/react';
10-
import AuthorInformation from './AuthorInformation/AuthorInformation';
10+
import AuthorInformation from '../AuthorInformation';
11+
import { FormType } from '../AuthorInformation';
1112
import KnowledgeInformation from './KnowledgeInformation/KnowledgeInformation';
1213
import FilePathInformation from './FilePathInformation/FilePathInformation';
1314
import DocumentInformation from './DocumentInformation/DocumentInformation';
@@ -481,8 +482,9 @@ export const KnowledgeForm: React.FunctionComponent<KnowledgeFormProps> = ({ kno
481482

482483
<Form className="form-k">
483484
<AuthorInformation
485+
formType={FormType.Knowledge}
484486
reset={reset}
485-
knowledgeFormData={knowledgeFormData}
487+
formData={knowledgeFormData}
486488
setDisableAction={setDisableAction}
487489
email={email}
488490
setEmail={setEmail}

src/components/Contribute/Knowledge/validation.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ export const validateFields = (
160160
return true;
161161
};
162162

163-
export const checkKnowledgeFormCompletion = (knowledgeFormData: KnowledgeFormData): boolean => {
163+
export const checkKnowledgeFormCompletion = (knowledgeFormData: object): boolean => {
164164
// Helper function to check if a value is non-empty
165165
// eslint-disable-next-line @typescript-eslint/no-explicit-any
166166
const isNonEmpty = (value: any): boolean => {

src/components/Contribute/Skill/AuthorInformation/AuthorInformation.tsx

Lines changed: 0 additions & 114 deletions
This file was deleted.

src/components/Contribute/Skill/index.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ import { ActionGroup } from '@patternfly/react-core/dist/dynamic/components/Form
77
import { Form } from '@patternfly/react-core/dist/dynamic/components/Form';
88
import { getGitHubUsername } from '../../../utils/github';
99
import { useSession } from 'next-auth/react';
10-
import AuthorInformation from './AuthorInformation/AuthorInformation';
10+
import AuthorInformation from '../AuthorInformation';
11+
import { FormType } from '../AuthorInformation';
1112
import FilePathInformation from './FilePathInformation/FilePathInformation';
1213
import AttributionInformation from './AttributionInformation/AttributionInformation';
1314
import Submit from './Submit/Submit';
@@ -371,8 +372,9 @@ export const SkillForm: React.FunctionComponent<SkillFormProps> = ({ skillEditFo
371372
)}
372373
<Form className="form-s">
373374
<AuthorInformation
375+
formType={FormType.Knowledge}
374376
reset={reset}
375-
skillFormData={skillFormData}
377+
formData={skillFormData}
376378
setDisableAction={setDisableAction}
377379
email={email}
378380
setEmail={setEmail}

src/components/Contribute/Skill/validation.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ export const validateFields = (
8585

8686
const optionalKeys = ['context', 'isContextValid', 'validationError', 'questionValidationError', 'answerValidationError'];
8787

88-
export const checkSkillFormCompletion = (skillFormData: SkillFormData): boolean => {
88+
export const checkSkillFormCompletion = (skillFormData: object): boolean => {
8989
// eslint-disable-next-line @typescript-eslint/no-explicit-any
9090
const isObject = (value: Record<string, any>): boolean => {
9191
return value && typeof value === 'object' && !Array.isArray(value);

0 commit comments

Comments
 (0)