@@ -12,7 +12,7 @@ import {
1212import React from 'react' ;
1313import FieldSelector from './schema-field-selector' ;
1414import FakerMappingSelector from './faker-mapping-selector' ;
15- import type { FakerSchemaMapping , MockDataGeneratorState } from './types' ;
15+ import type { FakerSchema , MockDataGeneratorState } from './types' ;
1616
1717const containerStyles = css ( {
1818 display : 'flex' ,
@@ -49,55 +49,49 @@ const schemaEditorLoaderStyles = css({
4949} ) ;
5050
5151const 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