Skip to content

Commit 5cabab1

Browse files
committed
Update schema editor screen
1 parent eadd94b commit 5cabab1

File tree

1 file changed

+29
-35
lines changed

1 file changed

+29
-35
lines changed

packages/compass-collection/src/components/mock-data-generator-modal/faker-schema-editor-screen.tsx

Lines changed: 29 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import {
1212
import React from 'react';
1313
import FieldSelector from './schema-field-selector';
1414
import FakerMappingSelector from './faker-mapping-selector';
15-
import type { FakerSchemaMapping, MockDataGeneratorState } from './types';
15+
import type { FakerSchema, MockDataGeneratorState } from './types';
1616

1717
const containerStyles = css({
1818
display: 'flex',
@@ -49,55 +49,49 @@ const schemaEditorLoaderStyles = css({
4949
});
5050

5151
const FakerSchemaEditorContent = ({
52-
fakerSchemaMappings,
52+
fakerSchema,
5353
onSchemaConfirmed,
5454
}: {
55-
fakerSchemaMappings: FakerSchemaMapping[];
55+
fakerSchema: FakerSchema;
5656
onSchemaConfirmed: (isConfirmed: boolean) => void;
5757
}) => {
5858
const [fakerSchemaFormValues, setFakerSchemaFormValues] =
59-
React.useState<Array<FakerSchemaMapping>>(fakerSchemaMappings);
60-
const [activeField, setActiveField] = React.useState<string>(
61-
fakerSchemaFormValues[0].fieldPath
62-
);
59+
React.useState<FakerSchema>(fakerSchema);
60+
61+
const fieldPaths = Object.keys(fakerSchemaFormValues);
62+
const [activeField, setActiveField] = React.useState<string>(fieldPaths[0]);
6363

64-
const activeJsonType = fakerSchemaFormValues.find(
65-
(mapping) => mapping.fieldPath === activeField
66-
)?.mongoType;
67-
const activeFakerFunction = fakerSchemaFormValues.find(
68-
(mapping) => mapping.fieldPath === activeField
69-
)?.fakerMethod;
64+
const activeJsonType = fakerSchemaFormValues[activeField]?.mongoType;
65+
const activeFakerFunction = fakerSchemaFormValues[activeField]?.fakerMethod;
7066

7167
const resetIsSchemaConfirmed = () => {
7268
onSchemaConfirmed(false);
7369
};
7470

7571
const onJsonTypeSelect = (newJsonType: string) => {
76-
const updatedFakerFieldMapping = fakerSchemaFormValues.find(
77-
(mapping) => mapping.fieldPath === activeField
78-
);
79-
if (updatedFakerFieldMapping) {
80-
updatedFakerFieldMapping.mongoType = newJsonType;
81-
setFakerSchemaFormValues(
82-
fakerSchemaFormValues.map((mapping) =>
83-
mapping.fieldPath === activeField ? updatedFakerFieldMapping : mapping
84-
)
85-
);
72+
const currentMapping = fakerSchemaFormValues[activeField];
73+
if (currentMapping) {
74+
setFakerSchemaFormValues({
75+
...fakerSchemaFormValues,
76+
[activeField]: {
77+
...currentMapping,
78+
mongoType: newJsonType,
79+
},
80+
});
8681
resetIsSchemaConfirmed();
8782
}
8883
};
8984

9085
const onFakerFunctionSelect = (newFakerFunction: string) => {
91-
const updatedFakerFieldMapping = fakerSchemaFormValues.find(
92-
(mapping) => mapping.fieldPath === activeField
93-
);
94-
if (updatedFakerFieldMapping) {
95-
updatedFakerFieldMapping.fakerMethod = newFakerFunction;
96-
setFakerSchemaFormValues(
97-
fakerSchemaFormValues.map((mapping) =>
98-
mapping.fieldPath === activeField ? updatedFakerFieldMapping : mapping
99-
)
100-
);
86+
const currentMapping = fakerSchemaFormValues[activeField];
87+
if (currentMapping) {
88+
setFakerSchemaFormValues({
89+
...fakerSchemaFormValues,
90+
[activeField]: {
91+
...currentMapping,
92+
fakerMethod: newFakerFunction,
93+
},
94+
});
10195
resetIsSchemaConfirmed();
10296
}
10397
};
@@ -107,7 +101,7 @@ const FakerSchemaEditorContent = ({
107101
<div className={innerEditorStyles}>
108102
<FieldSelector
109103
activeField={activeField}
110-
fields={fakerSchemaFormValues.map((mapping) => mapping.fieldPath)}
104+
fields={fieldPaths}
111105
onFieldSelect={setActiveField}
112106
/>
113107
{activeJsonType && activeFakerFunction && (
@@ -163,7 +157,7 @@ const FakerSchemaEditorScreen = ({
163157
)}
164158
{fakerSchemaGenerationState.status === 'completed' && (
165159
<FakerSchemaEditorContent
166-
fakerSchemaMappings={fakerSchemaGenerationState.fakerSchema}
160+
fakerSchema={fakerSchemaGenerationState.fakerSchema}
167161
onSchemaConfirmed={onSchemaConfirmed}
168162
/>
169163
)}

0 commit comments

Comments
 (0)