Skip to content

Commit

Permalink
show success message right away (#20354)
Browse files Browse the repository at this point in the history
  • Loading branch information
Joe Reuter committed Dec 16, 2022
1 parent 32015af commit 8f5516d
Show file tree
Hide file tree
Showing 10 changed files with 26 additions and 52 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ interface DestinationFormProps {
connectionConfiguration?: ConnectionConfiguration;
}) => Promise<void>;
destinationDefinitions: DestinationDefinitionRead[];
hasSuccess?: boolean;
error?: FormError | null;
}

Expand All @@ -34,12 +33,7 @@ const hasDestinationDefinitionId = (state: unknown): state is { destinationDefin
);
};

export const DestinationForm: React.FC<DestinationFormProps> = ({
onSubmit,
destinationDefinitions,
error,
hasSuccess,
}) => {
export const DestinationForm: React.FC<DestinationFormProps> = ({ onSubmit, destinationDefinitions, error }) => {
const location = useLocation();

const [destinationDefinitionId, setDestinationDefinitionId] = useState(
Expand Down Expand Up @@ -88,7 +82,6 @@ export const DestinationForm: React.FC<DestinationFormProps> = ({
title={<FormattedMessage id="onboarding.destinationSetUp" />}
description={<FormattedMessage id="destinations.description" />}
isLoading={isLoading}
hasSuccess={hasSuccess}
fetchingConnectorError={destinationDefinitionError instanceof Error ? destinationDefinitionError : null}
availableConnectorDefinitions={destinationDefinitions}
onConnectorDefinitionSelect={onDropDownSelect}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import React, { useEffect, useState } from "react";
import React, { useEffect } from "react";
// TODO: create separate component for source and destinations forms
import { useLocation, useNavigate } from "react-router-dom";

Expand All @@ -16,7 +16,6 @@ interface ConnectionCreateDestinationFormProps {
export const ConnectionCreateDestinationForm: React.FC<ConnectionCreateDestinationFormProps> = ({ afterSubmit }) => {
const navigate = useNavigate();
const location = useLocation();
const [successRequest, setSuccessRequest] = useState(false);

const { destinationDefinitions } = useDestinationDefinitionList();
const { mutateAsync: createDestination } = useCreateDestination();
Expand All @@ -31,9 +30,7 @@ export const ConnectionCreateDestinationForm: React.FC<ConnectionCreateDestinati
values,
destinationConnector: connector,
});
setSuccessRequest(true);
setTimeout(() => {
setSuccessRequest(false);
navigate(
{},
{
Expand All @@ -55,11 +52,5 @@ export const ConnectionCreateDestinationForm: React.FC<ConnectionCreateDestinati
};
}, [setDocumentationPanelOpen]);

return (
<DestinationForm
onSubmit={onSubmitDestinationForm}
destinationDefinitions={destinationDefinitions}
hasSuccess={successRequest}
/>
);
return <DestinationForm onSubmit={onSubmitDestinationForm} destinationDefinitions={destinationDefinitions} />;
};
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import React, { useEffect, useState } from "react";
import React, { useEffect } from "react";
import { useLocation, useNavigate } from "react-router-dom";

import { ConnectionConfiguration } from "core/domain/connection";
Expand All @@ -14,7 +14,6 @@ interface ConnectionCreateSourceFormProps {
export const ConnectionCreateSourceForm: React.FC<ConnectionCreateSourceFormProps> = ({ afterSubmit }) => {
const location = useLocation();
const navigate = useNavigate();
const [successRequest, setSuccessRequest] = useState(false);
const { sourceDefinitions } = useSourceDefinitionList();
const { mutateAsync: createSource } = useCreateSource();

Expand All @@ -29,9 +28,7 @@ export const ConnectionCreateSourceForm: React.FC<ConnectionCreateSourceFormProp
throw new Error("No Connector Found");
}
const result = await createSource({ values, sourceConnector });
setSuccessRequest(true);
setTimeout(() => {
setSuccessRequest(false);
navigate(
{},
{
Expand All @@ -53,5 +50,5 @@ export const ConnectionCreateSourceForm: React.FC<ConnectionCreateSourceFormProp
};
}, [setDocumentationPanelOpen]);

return <SourceForm onSubmit={onSubmitSourceStep} sourceDefinitions={sourceDefinitions} hasSuccess={successRequest} />;
return <SourceForm onSubmit={onSubmitSourceStep} sourceDefinitions={sourceDefinitions} />;
};
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import React, { useState } from "react";
import React from "react";
import { FormattedMessage } from "react-intl";
import { useNavigate } from "react-router-dom";

Expand All @@ -18,7 +18,6 @@ import { SourceForm } from "./components/SourceForm";
const CreateSourcePage: React.FC = () => {
useTrackPage(PageTrackingCodes.SOURCE_NEW);
const navigate = useNavigate();
const [successRequest, setSuccessRequest] = useState(false);

const { sourceDefinitions } = useSourceDefinitionList();
const { mutateAsync: createSource } = useCreateSource();
Expand All @@ -34,9 +33,7 @@ const CreateSourcePage: React.FC = () => {
throw new Error("No Connector Found");
}
const result = await createSource({ values, sourceConnector: connector });
setSuccessRequest(true);
setTimeout(() => {
setSuccessRequest(false);
navigate(`../${result.sourceId}`);
}, 2000);
};
Expand All @@ -47,7 +44,7 @@ const CreateSourcePage: React.FC = () => {
<ConnectorDocumentationWrapper>
<PageHeader title={null} middleTitleBlock={<FormattedMessage id="sources.newSourceTitle" />} />
<FormPageContent>
<SourceForm onSubmit={onSubmitSourceStep} sourceDefinitions={sourceDefinitions} hasSuccess={successRequest} />
<SourceForm onSubmit={onSubmitSourceStep} sourceDefinitions={sourceDefinitions} />
<CloudInviteUsersHint connectorType="source" />
</FormPageContent>
</ConnectorDocumentationWrapper>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ interface SourceFormProps {
connectionConfiguration?: ConnectionConfiguration;
}) => Promise<void>;
sourceDefinitions: SourceDefinitionReadWithLatestTag[];
hasSuccess?: boolean;
error?: FormError | null;
}

Expand All @@ -30,7 +29,7 @@ const hasSourceDefinitionId = (state: unknown): state is { sourceDefinitionId: s
);
};

export const SourceForm: React.FC<SourceFormProps> = ({ onSubmit, sourceDefinitions, error, hasSuccess }) => {
export const SourceForm: React.FC<SourceFormProps> = ({ onSubmit, sourceDefinitions, error }) => {
const location = useLocation();

const [sourceDefinitionId, setSourceDefinitionId] = useState<string | null>(
Expand Down Expand Up @@ -60,7 +59,6 @@ export const SourceForm: React.FC<SourceFormProps> = ({ onSubmit, sourceDefiniti
title={<FormattedMessage id="onboarding.sourceSetUp" />}
description={<FormattedMessage id="sources.description" />}
isLoading={isLoading}
hasSuccess={hasSuccess}
fetchingConnectorError={sourceDefinitionError instanceof Error ? sourceDefinitionError : null}
availableConnectorDefinitions={sourceDefinitions}
onConnectorDefinitionSelect={onDropDownSelect}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import React, { useState } from "react";
import React from "react";
import { FormattedMessage } from "react-intl";
import { useNavigate } from "react-router-dom";

Expand All @@ -18,7 +18,6 @@ export const CreateDestinationPage: React.FC = () => {
useTrackPage(PageTrackingCodes.DESTINATION_NEW);

const navigate = useNavigate();
const [successRequest, setSuccessRequest] = useState(false);
const { destinationDefinitions } = useDestinationDefinitionList();
const { mutateAsync: createDestination } = useCreateDestination();

Expand All @@ -32,9 +31,7 @@ export const CreateDestinationPage: React.FC = () => {
values,
destinationConnector: connector,
});
setSuccessRequest(true);
setTimeout(() => {
setSuccessRequest(false);
navigate(`../${result.destinationId}`);
}, 2000);
};
Expand All @@ -45,11 +42,7 @@ export const CreateDestinationPage: React.FC = () => {
<ConnectorDocumentationWrapper>
<PageHeader title={null} middleTitleBlock={<FormattedMessage id="destinations.newDestinationTitle" />} />
<FormPageContent>
<DestinationForm
onSubmit={onSubmitDestinationForm}
destinationDefinitions={destinationDefinitions}
hasSuccess={successRequest}
/>
<DestinationForm onSubmit={onSubmitDestinationForm} destinationDefinitions={destinationDefinitions} />
<CloudInviteUsersHint connectorType="destination" />
</FormPageContent>
</ConnectorDocumentationWrapper>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,6 @@ interface ConnectorCardBaseProps {
// used in ConnectorForm
formId?: string;
fetchingConnectorError?: Error | null;
hasSuccess?: boolean;
isLoading?: boolean;
}

Expand Down Expand Up @@ -85,7 +84,14 @@ export const ConnectorCard: React.FC<ConnectorCardCreateProps | ConnectorCardEdi
const [advancedMode] = useAdvancedModeSetting();

const { setDocumentationUrl, setDocumentationPanelOpen } = useDocumentationPanelContext();
const { testConnector, isTestConnectionInProgress, onStopTesting, error, reset } = useTestConnector(props);
const {
testConnector,
isTestConnectionInProgress,
onStopTesting,
error,
reset,
isSuccess: connectionTestSuccess,
} = useTestConnector(props);
const { trackTestConnectorFailure, trackTestConnectorSuccess, trackTestConnectorStarted } =
useAnalyticsTrackFunctions(props.formType);

Expand Down Expand Up @@ -202,6 +208,7 @@ export const ConnectorCard: React.FC<ConnectorCardCreateProps | ConnectorCardEdi
selectedConnectorDefinition={selectedConnectorDefinition}
selectedConnectorDefinitionSpecification={selectedConnectorDefinitionSpecification}
isTestConnectionInProgress={isTestConnectionInProgress}
connectionTestSuccess={connectionTestSuccess}
onStopTesting={onStopTesting}
testConnector={testConnector}
onSubmit={onHandleSubmit}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ export interface ConnectorFormProps {
onSubmit: (values: ConnectorFormValues) => Promise<void>;
isEditMode?: boolean;
formValues?: Partial<ConnectorFormValues>;
hasSuccess?: boolean;
connectionTestSuccess?: boolean;
errorMessage?: React.ReactNode;
successMessage?: React.ReactNode;
connectorId?: string;
Expand All @@ -99,7 +99,6 @@ export const ConnectorForm: React.FC<ConnectorFormProps> = (props) => {
formValues,
onSubmit,
isEditMode,
isTestConnectionInProgress,
onStopTesting,
testConnector,
selectedConnectorDefinition,
Expand Down Expand Up @@ -166,7 +165,6 @@ export const ConnectorForm: React.FC<ConnectorFormProps> = (props) => {
{...props}
formFields={formFields}
errorMessage={errorMessage}
isTestConnectionInProgress={isTestConnectionInProgress}
onStopTestingConnector={onStopTesting ? () => onStopTesting() : undefined}
onRetest={testConnector ? async () => await testConnector() : undefined}
/>
Expand Down
6 changes: 3 additions & 3 deletions airbyte-webapp/src/views/Connector/ConnectorForm/FormRoot.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import { ConnectorFormValues } from "./types";

interface FormRootProps {
formFields: FormBlock;
hasSuccess?: boolean;
connectionTestSuccess?: boolean;
isTestConnectionInProgress?: boolean;
errorMessage?: React.ReactNode;
successMessage?: React.ReactNode;
Expand All @@ -25,7 +25,7 @@ export const FormRoot: React.FC<FormRootProps> = ({
formFields,
successMessage,
errorMessage,
hasSuccess,
connectionTestSuccess,
onStopTestingConnector,
}) => {
const { dirty, isSubmitting, isValid } = useFormikContext<ConnectorFormValues>();
Expand Down Expand Up @@ -56,7 +56,7 @@ export const FormRoot: React.FC<FormRootProps> = ({
isSubmitting={isSubmitting || isTestConnectionInProgress}
errorMessage={errorMessage}
formType={formType}
hasSuccess={hasSuccess}
connectionTestSuccess={connectionTestSuccess}
/>
)}
</Form>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ interface CreateControlProps {
formType: "source" | "destination";
isSubmitting: boolean;
errorMessage?: React.ReactNode;
hasSuccess?: boolean;
connectionTestSuccess?: boolean;

isTestConnectionInProgress: boolean;
onCancelTesting?: () => void;
Expand All @@ -30,15 +30,15 @@ const CreateControls: React.FC<CreateControlProps> = ({
isTestConnectionInProgress,
isSubmitting,
formType,
hasSuccess,
connectionTestSuccess,
errorMessage,
onCancelTesting,
}) => {
if (isSubmitting) {
return <TestingConnectionSpinner isCancellable={isTestConnectionInProgress} onCancelTesting={onCancelTesting} />;
}

if (hasSuccess) {
if (connectionTestSuccess) {
return <TestingConnectionSuccess />;
}

Expand Down

0 comments on commit 8f5516d

Please sign in to comment.