Skip to content

Commit 0c98541

Browse files
committed
fix: handle loading state flicker in generate (#13857)
1 parent c4b1a9a commit 0c98541

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

airbyte-webapp/src/pages/connectorBuilder/ConnectorBuilderGeneratePage/ConnectorBuilderGeneratePage.tsx

+9-3
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import { Text } from "components/ui/Text";
2121

2222
import { useBuilderAssistCreateConnectorMutation } from "core/api";
2323
import { DeclarativeComponentSchema, DeclarativeStream } from "core/api/types/ConnectorManifest";
24+
import { useDebounceValue } from "core/utils/useDebounceValue";
2425
import { ConnectorBuilderLocalStorageProvider } from "services/connectorBuilder/ConnectorBuilderLocalStorageService";
2526
import { ConnectorBuilderFormManagementStateProvider } from "services/connectorBuilder/ConnectorBuilderStateService";
2627

@@ -37,9 +38,14 @@ interface GeneratorFormResponse {
3738
}
3839

3940
const ConnectorBuilderGeneratePageInner: React.FC = () => {
40-
const { createAndNavigate, isLoading } = useCreateAndNavigate();
41+
const { createAndNavigate, isLoading: isCreateLoading } = useCreateAndNavigate();
4142
const { mutateAsync: getAssistValues, isLoading: isAssistLoading } = useBuilderAssistCreateConnectorMutation();
4243

44+
// Ensure we don't show the loading spinner too early
45+
const isLoading = isCreateLoading || isAssistLoading;
46+
const debounceTime = isLoading ? 500 : 0;
47+
const isLoadingWithDelay = useDebounceValue(isCreateLoading || isAssistLoading, debounceTime);
48+
4349
// These are stored to ensure we persist form values even if the user skips the assist
4450
const [submittedAssistValues, setSubmittedAssistValues] = useState<GeneratorFormResponse | null>(null);
4551
const projectName = submittedAssistValues?.name || DEFAULT_CONNECTOR_NAME;
@@ -88,10 +94,10 @@ const ConnectorBuilderGeneratePageInner: React.FC = () => {
8894
return (
8995
<FlexContainer direction="column" gap="2xl" className={styles.container}>
9096
<AirbyteTitle title={<FormattedMessage id="connectorBuilder.generatePage.prompt" />} />
91-
{isAssistLoading ? (
97+
{isLoadingWithDelay ? (
9298
<AssistWaiting onSkip={onSkip} />
9399
) : (
94-
<ConnectorBuilderGenerateForm isLoading={isLoading} onSubmit={onFormSubmit} onCancel={onCancel} />
100+
<ConnectorBuilderGenerateForm isLoading={isCreateLoading} onSubmit={onFormSubmit} onCancel={onCancel} />
95101
)}
96102
</FlexContainer>
97103
);

0 commit comments

Comments
 (0)