diff --git a/packages/codegen-ui-react/lib/__tests__/__snapshots__/studio-ui-codegen-react-forms.test.ts.snap b/packages/codegen-ui-react/lib/__tests__/__snapshots__/studio-ui-codegen-react-forms.test.ts.snap index 04406c93f..b9226043b 100644 --- a/packages/codegen-ui-react/lib/__tests__/__snapshots__/studio-ui-codegen-react-forms.test.ts.snap +++ b/packages/codegen-ui-react/lib/__tests__/__snapshots__/studio-ui-codegen-react-forms.test.ts.snap @@ -1422,9 +1422,9 @@ export default function MyPostForm(props) { username, caption, Customtags, - post_url, + post_url: post_url || undefined, metadata, - profile_url, + profile_url: profile_url || undefined, }; const validationResponses = await Promise.all( Object.keys(validations).reduce((promises, fieldName) => { @@ -3045,9 +3045,9 @@ export default function MyPostForm(props) { let modelFields = { caption, username, - post_url, + post_url: post_url || undefined, metadata, - profile_url, + profile_url: profile_url || undefined, }; const validationResponses = await Promise.all( Object.keys(validations).reduce((promises, fieldName) => { @@ -3400,8 +3400,8 @@ export default function MyPostForm(props) { TextAreaFieldbbd63464, caption, username, - profile_url, - post_url, + profile_url: profile_url || undefined, + post_url: post_url || undefined, metadata, }; const validationResponses = await Promise.all( @@ -5834,8 +5834,8 @@ export default function PostCreateFormRow(props) { let modelFields = { username, caption, - post_url, - profile_url, + post_url: post_url || undefined, + profile_url: profile_url || undefined, status, metadata, }; diff --git a/packages/codegen-ui-react/lib/forms/form-renderer-helper.ts b/packages/codegen-ui-react/lib/forms/form-renderer-helper.ts index 88ab2b714..56cef4e06 100644 --- a/packages/codegen-ui-react/lib/forms/form-renderer-helper.ts +++ b/packages/codegen-ui-react/lib/forms/form-renderer-helper.ts @@ -916,7 +916,7 @@ export const buildModelFieldObject = ( const fieldSet = new Set(); const fields = Object.keys(fieldConfigs).reduce((acc, value) => { const fieldName = value.split('.')[0]; - const { sanitizedFieldName } = fieldConfigs[value]; + const { sanitizedFieldName, dataType } = fieldConfigs[value]; const renderedFieldName = sanitizedFieldName || fieldName; if (!fieldSet.has(renderedFieldName)) { let assignment = nameOverrides[fieldName] @@ -928,6 +928,22 @@ export const buildModelFieldObject = ( factory.createIdentifier(sanitizedFieldName), ); } + /* + Empty string value for not required url field fails to save at datastore + let modelFields = { + url: url || undefined, + } + */ + if (dataType === 'AWSURL' && !shouldBeConst) { + assignment = factory.createPropertyAssignment( + factory.createStringLiteral(fieldName), + factory.createBinaryExpression( + factory.createIdentifier(renderedFieldName), + factory.createToken(SyntaxKind.BarBarToken), + factory.createIdentifier('undefined'), + ), + ); + } acc.push(assignment); fieldSet.add(renderedFieldName);