Skip to content

Commit 0c64e27

Browse files
github-automation-metabasesloanspargerundrfined
authored
🤖 backported "Bot 1146 transform context is included twice " (metabase#74382)
Bot 1146 transform context is included twice (metabase#74126) * fix: transform context is included twice * opinionated refactor * unset dry run error on unmount * richer feedback for the agent --------- Co-authored-by: Sloan Sparger <sloansparger@users.noreply.github.com> Co-authored-by: Maksym Yakubych <maksym@metabase.com>
1 parent 8b60203 commit 0c64e27

4 files changed

Lines changed: 24 additions & 11 deletions

File tree

enterprise/frontend/src/metabase-enterprise/transforms-python/components/PythonTransformEditor/PythonTransformEditor.tsx

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import { useEffect } from "react";
33
import { usePrevious } from "react-use";
44

55
import type { PythonTransformEditorProps } from "metabase/plugins";
6-
import { useRegisterMetabotTransformContext } from "metabase/transforms/hooks/use-register-transform-metabot-context";
76
import { Flex, Stack } from "metabase/ui";
87
import type {
98
DatabaseId,
@@ -30,17 +29,20 @@ export function PythonTransformEditor({
3029
onChangeSource,
3130
onAcceptProposed,
3231
onRejectProposed,
32+
onDryRunErrorChange,
3333
onRunTransform,
3434
onRun,
3535
}: PythonTransformEditorProps) {
3636
const { isRunning, cancel, run, executionResult, isDirty } =
3737
useTestPythonTransform(source);
3838

39-
useRegisterMetabotTransformContext(
40-
transform,
41-
source,
42-
executionResult?.error?.message,
43-
);
39+
useEffect(() => {
40+
const errMsg = [executionResult?.error?.message, executionResult?.logs]
41+
.filter((x) => !!x)
42+
.join("\n\n");
43+
onDryRunErrorChange?.(errMsg);
44+
return () => onDryRunErrorChange?.(undefined);
45+
}, [executionResult, onDryRunErrorChange]);
4446

4547
const wasRunning = usePrevious(isRunning);
4648

frontend/src/metabase/plugins/oss/transforms.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ export type PythonTransformEditorProps = {
3434
onChangeSource: (source: PythonTransformSourceDraft) => void;
3535
onAcceptProposed: () => void;
3636
onRejectProposed: () => void;
37+
onDryRunErrorChange?: (error: string | undefined) => void;
3738
onRunTransform?: (result: any) => void;
3839
onRun?: () => void;
3940
};

frontend/src/metabase/transforms/pages/NewTransformPage/NewTransformPage.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import { PLUGIN_REMOTE_SYNC, PLUGIN_TRANSFORMS_PYTHON } from "metabase/plugins";
1919
import { getInitialUiState } from "metabase/querying/editor/components/QueryEditor";
2020
import { useDispatch, useSelector } from "metabase/redux";
2121
import { getMetadata } from "metabase/selectors/metadata";
22+
import { useRegisterMetabotTransformContext } from "metabase/transforms/hooks/use-register-transform-metabot-context";
2223
import { useTransformPermissions } from "metabase/transforms/hooks/use-transform-permissions";
2324
import { Box, Center } from "metabase/ui";
2425
import * as Urls from "metabase/urls";
@@ -31,7 +32,6 @@ import type {
3132

3233
import { TransformEditor } from "../../components/TransformEditor";
3334
import { NAME_MAX_LENGTH } from "../../constants";
34-
import { useRegisterMetabotTransformContext } from "../../hooks/use-register-transform-metabot-context";
3535
import { useSourceState } from "../../hooks/use-source-state";
3636
import { getValidationResult, isCompleteSource } from "../../utils";
3737

@@ -119,7 +119,8 @@ function NewTransformPageBody({
119119
const [isModalOpened, { open: openModal, close: closeModal }] =
120120
useDisclosure();
121121
const dispatch = useDispatch();
122-
useRegisterMetabotTransformContext(undefined, source);
122+
const [dryRunError, setDryRunError] = useState<string | undefined>(undefined);
123+
useRegisterMetabotTransformContext(undefined, source, dryRunError);
123124

124125
const validationResult = useMemo(() => {
125126
return source.type === "query"
@@ -187,6 +188,7 @@ function NewTransformPageBody({
187188
onChangeSource={setSourceAndRejectProposed}
188189
onAcceptProposed={acceptProposed}
189190
onRejectProposed={rejectProposed}
191+
onDryRunErrorChange={setDryRunError}
190192
/>
191193
) : (
192194
<TransformEditor

frontend/src/metabase/transforms/pages/TransformQueryPage/TransformQueryPage.tsx

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import {
2222
} from "metabase/plugins";
2323
import { getInitialUiState } from "metabase/querying/editor/components/QueryEditor";
2424
import { useDispatch, useSelector } from "metabase/redux";
25+
import { useRegisterMetabotTransformContext } from "metabase/transforms/hooks/use-register-transform-metabot-context";
2526
import { useTransformPermissions } from "metabase/transforms/hooks/use-transform-permissions";
2627
import { Box, Center, Group, Icon } from "metabase/ui";
2728
import * as Urls from "metabase/urls";
@@ -37,7 +38,6 @@ import {
3738
type TransformEditorProps,
3839
} from "../../components/TransformEditor";
3940
import { TransformHeader } from "../../components/TransformHeader";
40-
import { useRegisterMetabotTransformContext } from "../../hooks/use-register-transform-metabot-context";
4141
import { useSourceState } from "../../hooks/use-source-state";
4242
import { isCompleteSource } from "../../utils";
4343

@@ -127,8 +127,12 @@ function TransformQueryPageBody({
127127
? (transform.last_run.message ?? undefined)
128128
: undefined;
129129
}, [transform.last_run]);
130-
131-
useRegisterMetabotTransformContext(transform, source, lastRunError);
130+
const [dryRunError, setDryRunError] = useState<string | undefined>(undefined);
131+
useRegisterMetabotTransformContext(
132+
transform,
133+
source,
134+
dryRunError ?? lastRunError,
135+
);
132136

133137
const {
134138
checkData,
@@ -244,6 +248,7 @@ function TransformQueryPageBody({
244248
onChangeSource={setSourceAndRejectProposed}
245249
onAcceptProposed={acceptProposed}
246250
onRejectProposed={rejectProposed}
251+
onDryRunErrorChange={setDryRunError}
247252
/>
248253
) : (
249254
<TransformEditor
@@ -298,6 +303,7 @@ export type TransformQueryPageEditorProps = {
298303
acceptProposed: () => void;
299304
rejectProposed: () => void;
300305
uiOptions?: TransformEditorProps["uiOptions"];
306+
onDryRunErrorChange?: (error: string | undefined) => void;
301307
onRunQueryStart?: (query: DatasetQuery) => boolean | void;
302308
onRunTransform?: (result: any) => void;
303309
onRun?: () => void;
@@ -315,6 +321,7 @@ export function TransformQueryPageEditor({
315321
isEditMode = false,
316322
acceptProposed,
317323
rejectProposed,
324+
onDryRunErrorChange,
318325
onRunQueryStart,
319326
onRunTransform,
320327
onRun,
@@ -330,6 +337,7 @@ export function TransformQueryPageEditor({
330337
onChangeSource={setSourceAndRejectProposed}
331338
onAcceptProposed={acceptProposed}
332339
onRejectProposed={rejectProposed}
340+
onDryRunErrorChange={onDryRunErrorChange}
333341
onRunTransform={onRunTransform}
334342
onRun={onRun}
335343
/>

0 commit comments

Comments
 (0)