Skip to content

Commit 219b6e1

Browse files
author
Joe Reuter
authored
πŸͺŸπŸŽ‰ Connector form: Reload config if updated during connection check (#21839)
* reload config if flag indicates it * remove debug stuff * fix
1 parent 8866a3c commit 219b6e1

File tree

5 files changed

+37
-5
lines changed

5 files changed

+37
-5
lines changed

β€Žairbyte-webapp/src/hooks/services/useDestinationHook.tsx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { useCallback } from "react";
12
import { useMutation, useQueryClient } from "react-query";
23

34
import { Action, Namespace } from "core/analytics";
@@ -60,6 +61,14 @@ const useGetDestination = <T extends string | undefined | null>(
6061
});
6162
};
6263

64+
export const useInvalidateDestination = <T extends string | undefined | null>(destinationId: T): (() => void) => {
65+
const queryClient = useQueryClient();
66+
67+
return useCallback(() => {
68+
queryClient.invalidateQueries(destinationsKeys.detail(destinationId ?? ""));
69+
}, [queryClient, destinationId]);
70+
};
71+
6372
const useCreateDestination = () => {
6473
const service = useDestinationService();
6574
const queryClient = useQueryClient();

β€Žairbyte-webapp/src/hooks/services/useSourceHook.tsx

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,14 @@ const useGetSource = <T extends string | undefined | null>(
6464
});
6565
};
6666

67+
export const useInvalidateSource = <T extends string | undefined | null>(sourceId: T): (() => void) => {
68+
const queryClient = useQueryClient();
69+
70+
return useCallback(() => {
71+
queryClient.invalidateQueries(sourcesKeys.detail(sourceId ?? ""));
72+
}, [queryClient, sourceId]);
73+
};
74+
6775
const useCreateSource = () => {
6876
const service = useSourceService();
6977
const queryClient = useQueryClient();

β€Žairbyte-webapp/src/pages/SourcesPage/pages/SourceItemPage/components/SourceSettings.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { ConnectionConfiguration } from "core/domain/connection";
55
import { SourceRead, WebBackendConnectionListItem } from "core/request/AirbyteClient";
66
import { useTrackPage, PageTrackingCodes } from "hooks/services/Analytics";
77
import { useFormChangeTrackerService, useUniqueFormId } from "hooks/services/FormChangeTracker";
8-
import { useDeleteSource, useUpdateSource } from "hooks/services/useSourceHook";
8+
import { useDeleteSource, useInvalidateSource, useUpdateSource } from "hooks/services/useSourceHook";
99
import { useDeleteModal } from "hooks/useDeleteModal";
1010
import { useSourceDefinition } from "services/connector/SourceDefinitionService";
1111
import { useGetSourceDefinitionSpecification } from "services/connector/SourceDefinitionSpecificationService";
@@ -36,6 +36,7 @@ const SourceSettings: React.FC<SourceSettingsProps> = ({ currentSource, connecti
3636
const sourceDefinitionSpecification = useGetSourceDefinitionSpecification(currentSource.sourceDefinitionId);
3737

3838
const sourceDefinition = useSourceDefinition(currentSource.sourceDefinitionId);
39+
const reloadSource = useInvalidateSource(currentSource.sourceId);
3940

4041
const onSubmit = async (values: {
4142
name: string;
@@ -82,6 +83,7 @@ const SourceSettings: React.FC<SourceSettingsProps> = ({ currentSource, connecti
8283
selectedConnectorDefinitionSpecification={sourceDefinitionSpecification}
8384
selectedConnectorDefinitionId={sourceDefinitionSpecification.sourceDefinitionId}
8485
connector={currentSource}
86+
reloadConfig={reloadSource}
8587
onSubmit={onSubmit}
8688
onDeleteClick={onDeleteClick}
8789
/>

β€Žairbyte-webapp/src/pages/destination/DestinationSettingsPage/DestinationSettingsPage.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,11 @@ import { useOutletContext } from "react-router-dom";
55
import { useTrackPage, PageTrackingCodes } from "hooks/services/Analytics";
66
import { useFormChangeTrackerService, useUniqueFormId } from "hooks/services/FormChangeTracker";
77
import { useConnectionList } from "hooks/services/useConnectionHook";
8-
import { useDeleteDestination, useUpdateDestination } from "hooks/services/useDestinationHook";
8+
import {
9+
useDeleteDestination,
10+
useInvalidateDestination,
11+
useUpdateDestination,
12+
} from "hooks/services/useDestinationHook";
913
import { useDeleteModal } from "hooks/useDeleteModal";
1014
import { useDestinationDefinition } from "services/connector/DestinationDefinitionService";
1115
import { useGetDestinationDefinitionSpecification } from "services/connector/DestinationDefinitionSpecificationService";
@@ -20,6 +24,7 @@ export const DestinationSettingsPage: React.FC = () => {
2024
const { connections: connectionsWithDestination } = useConnectionList({ destinationId: [destination.destinationId] });
2125
const destinationSpecification = useGetDestinationDefinitionSpecification(destination.destinationDefinitionId);
2226
const destinationDefinition = useDestinationDefinition(destination.destinationDefinitionId);
27+
const reloadDestination = useInvalidateDestination(destination.destinationId);
2328
const { mutateAsync: updateDestination } = useUpdateDestination();
2429
const { mutateAsync: deleteDestination } = useDeleteDestination();
2530
const formId = useUniqueFormId();
@@ -74,6 +79,7 @@ export const DestinationSettingsPage: React.FC = () => {
7479
selectedConnectorDefinitionSpecification={destinationSpecification}
7580
selectedConnectorDefinitionId={destinationSpecification.destinationDefinitionId}
7681
connector={destination}
82+
reloadConfig={reloadDestination}
7783
onSubmit={onSubmitForm}
7884
onDeleteClick={onDeleteClick}
7985
/>

β€Žairbyte-webapp/src/views/Connector/ConnectorCard/ConnectorCard.tsx

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ interface ConnectorCardBaseProps {
3333
jobInfo?: SynchronousJobRead | null;
3434
additionalSelectorComponent?: React.ReactNode;
3535
onSubmit: (values: ConnectorCardValues) => Promise<void> | void;
36+
reloadConfig?: () => void;
3637
onDeleteClick?: () => void;
3738
onConnectorDefinitionSelect?: (id: string) => void;
3839
availableConnectorDefinitions: ConnectorDefinition[];
@@ -72,6 +73,7 @@ export const ConnectorCard: React.FC<ConnectorCardCreateProps | ConnectorCardEdi
7273
additionalSelectorComponent,
7374
selectedConnectorDefinitionId,
7475
fetchingConnectorError,
76+
reloadConfig,
7577
...props
7678
}) => {
7779
const [errorStatusRequest, setErrorStatusRequest] = useState<Error | null>(null);
@@ -129,8 +131,9 @@ export const ConnectorCard: React.FC<ConnectorCardCreateProps | ConnectorCardEdi
129131
const testConnectorWithTracking = async (connectorCardValues?: ConnectorCardValues) => {
130132
trackTestConnectorStarted(selectedConnectorDefinition);
131133
try {
132-
await testConnector(connectorCardValues);
134+
const response = await testConnector(connectorCardValues);
133135
trackTestConnectorSuccess(selectedConnectorDefinition);
136+
return response;
134137
} catch (e) {
135138
trackTestConnectorFailure(selectedConnectorDefinition);
136139
throw e;
@@ -161,8 +164,12 @@ export const ConnectorCard: React.FC<ConnectorCardCreateProps | ConnectorCardEdi
161164
};
162165

163166
try {
164-
await testConnectorWithTracking(connectorCardValues);
165-
onSubmit(connectorCardValues);
167+
const response = await testConnectorWithTracking(connectorCardValues);
168+
if (response.jobInfo.connectorConfigurationUpdated && reloadConfig) {
169+
reloadConfig();
170+
} else {
171+
onSubmit(connectorCardValues);
172+
}
166173
} catch (e) {
167174
setErrorStatusRequest(e);
168175
setIsFormSubmitting(false);

0 commit comments

Comments
Β (0)