Fix #4617: Form stuck when changing DBT source from None to something else (#4618)

This commit is contained in:
darth-coder00 2022-05-03 15:31:27 +05:30 committed by GitHub
parent 6a5ffb0626
commit 2a6208f9b4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 10 additions and 21 deletions

View File

@ -529,7 +529,7 @@ const AddIngestion = ({
{activeIngestionStep === 2 && ( {activeIngestionStep === 2 && (
<DBTConfigFormBuilder <DBTConfigFormBuilder
cancelText="Back" cancelText="Back"
data={dbtConfigSource} data={dbtConfigSource || {}}
gcsType={gcsConfigType} gcsType={gcsConfigType}
handleGcsTypeChange={(type) => setGcsConfigType(type)} handleGcsTypeChange={(type) => setGcsConfigType(type)}
handleSourceChange={(src) => setDbtConfigSourceType(src)} handleSourceChange={(src) => setDbtConfigSourceType(src)}

View File

@ -26,7 +26,7 @@ export interface DBTFormCommonProps {
} }
export interface DBTConfigFormProps extends DBTFormCommonProps { export interface DBTConfigFormProps extends DBTFormCommonProps {
data?: DbtConfigSource; data: DbtConfigSource;
gcsType?: GCS_CONFIG; gcsType?: GCS_CONFIG;
source?: DBT_SOURCES; source?: DBT_SOURCES;
handleGcsTypeChange?: (type: GCS_CONFIG) => void; handleGcsTypeChange?: (type: GCS_CONFIG) => void;

View File

@ -28,7 +28,7 @@ import { DBTLocalConfig } from './DBTLocalConfig';
import { DBTS3Config } from './DBTS3Config'; import { DBTS3Config } from './DBTS3Config';
const DBTConfigFormBuilder: FunctionComponent<DBTConfigFormProps> = ({ const DBTConfigFormBuilder: FunctionComponent<DBTConfigFormProps> = ({
data = {}, data,
okText, okText,
cancelText, cancelText,
gcsType, gcsType,
@ -39,7 +39,6 @@ const DBTConfigFormBuilder: FunctionComponent<DBTConfigFormProps> = ({
onSubmit, onSubmit,
}: DBTConfigFormProps) => { }: DBTConfigFormProps) => {
const [dbtConfig, setDbtConfig] = useState<DbtConfigSource>(data); const [dbtConfig, setDbtConfig] = useState<DbtConfigSource>(data);
const [dbtSource, setDbtSource] = useState<DBT_SOURCES>(source);
const updateDbtConfig = ( const updateDbtConfig = (
key: keyof DbtConfigSource, key: keyof DbtConfigSource,
@ -124,7 +123,7 @@ const DBTConfigFormBuilder: FunctionComponent<DBTConfigFormProps> = ({
}; };
const getFields = () => { const getFields = () => {
switch (dbtSource) { switch (source) {
case DBT_SOURCES.local: { case DBT_SOURCES.local: {
return getLocalConfigFields(); return getLocalConfigFields();
} }
@ -168,13 +167,9 @@ const DBTConfigFormBuilder: FunctionComponent<DBTConfigFormProps> = ({
} }
}; };
useEffect(() => {
handleSourceChange && handleSourceChange(dbtSource);
}, [dbtSource]);
useEffect(() => { useEffect(() => {
setDbtConfig(data); setDbtConfig(data);
}, [data, dbtSource, gcsType]); }, [data, source, gcsType]);
return ( return (
<Fragment> <Fragment>
@ -191,9 +186,10 @@ const DBTConfigFormBuilder: FunctionComponent<DBTConfigFormProps> = ({
id="dbt-source" id="dbt-source"
name="dbt-source" name="dbt-source"
placeholder="Select DBT Source" placeholder="Select DBT Source"
value={dbtSource} value={source}
onChange={(e) => { onChange={(e) => {
setDbtSource(e.target.value as DBT_SOURCES); handleSourceChange &&
handleSourceChange(e.target.value as DBT_SOURCES);
}}> }}>
{DBTSources.map((option, i) => ( {DBTSources.map((option, i) => (
<option key={i} value={option.value}> <option key={i} value={option.value}>

View File

@ -138,7 +138,7 @@ function getInvalidEmailErrors<
) { ) {
let isValid = true; let isValid = true;
for (const field of ruleFields[rule]) { for (const field of ruleFields[rule]) {
if (!isValidEmail(data[field] as unknown as string)) { if (data[field] && !isValidEmail(data[field] as unknown as string)) {
isValid = false; isValid = false;
errors[field] = jsonData['form-error-messages'][ errors[field] = jsonData['form-error-messages'][
'invalid-email' 'invalid-email'
@ -164,7 +164,7 @@ function getInvalidUrlErrors<
) { ) {
let isValid = true; let isValid = true;
for (const field of ruleFields[rule]) { for (const field of ruleFields[rule]) {
if (!isValidUrl(data[field] as unknown as string)) { if (data[field] && !isValidUrl(data[field] as unknown as string)) {
isValid = false; isValid = false;
errors[field] = jsonData['form-error-messages'][ errors[field] = jsonData['form-error-messages'][
'invalid-url' 'invalid-url'
@ -214,13 +214,6 @@ export const checkDbtGCSCredsConfigRules = (
isValid = isValid =
getInvalidUrlErrors(data, errors, ruleFields, rule) && isValid; getInvalidUrlErrors(data, errors, ruleFields, rule) && isValid;
for (const field of ruleFields[rule]) {
if (!isValidUrl(data[field] || '')) {
isValid = false;
errors[field] = jsonData['form-error-messages']['invalid-url'];
}
}
break; break;
} }
default: default: