From 4f53b0b9a9d573cdc2a8a2805fffbcf8306b7cc9 Mon Sep 17 00:00:00 2001
From: Anton Kulyk <kuliks.anton@gmail.com>
Date: Wed, 19 Jun 2024 18:33:02 +0100
Subject: [PATCH] Fix updating table questions in the notebook editor before
 running a query (#44428)

* Add repro test

* Fix null check
---
 .../reproductions-3.cy.spec.js                | 58 +++++++++++++++++++
 .../visualizations/lib/sync-settings.ts       |  4 +-
 2 files changed, 60 insertions(+), 2 deletions(-)

diff --git a/e2e/test/scenarios/question-reproductions/reproductions-3.cy.spec.js b/e2e/test/scenarios/question-reproductions/reproductions-3.cy.spec.js
index 66fc8d85f1e..19db1270815 100644
--- a/e2e/test/scenarios/question-reproductions/reproductions-3.cy.spec.js
+++ b/e2e/test/scenarios/question-reproductions/reproductions-3.cy.spec.js
@@ -718,3 +718,61 @@ describe("issue 44071", () => {
       .should("be.visible");
   });
 });
+
+describe("issue 44415", () => {
+  beforeEach(() => {
+    restore();
+    cy.signIn("admin");
+    createQuestion(
+      {
+        query: {
+          "source-table": ORDERS_ID,
+          filter: [
+            "and",
+            [
+              "not-null",
+              ["field", ORDERS.DISCOUNT, { "base-type": "type/Float" }],
+            ],
+          ],
+        },
+        visualization_settings: {
+          "table.columns": [
+            {
+              name: "ID",
+              fieldRef: ["field", ORDERS.ID, null],
+              enabled: true,
+            },
+            {
+              name: "DISCOUNT",
+              fieldRef: ["field", ORDERS.DISCOUNT, null],
+              enabled: true,
+            },
+          ],
+        },
+      },
+      { wrapId: true },
+    );
+  });
+
+  it("should be able to edit a table question in the notebook editor before running its query (metabase#44415)", () => {
+    cy.get("@questionId").then(questionId =>
+      cy.visit(`/question/${questionId}/notebook`),
+    );
+
+    getNotebookStep("filter")
+      .findAllByTestId("notebook-cell-item")
+      .first()
+      .icon("close")
+      .click();
+
+    getNotebookStep("filter").should("not.exist");
+
+    visualize();
+
+    cy.findByTestId("qb-filters-panel").should("not.exist");
+    cy.get("@questionId").then(questionId => {
+      cy.url().should("not.include", `/question/${questionId}`);
+      cy.url().should("include", "question#");
+    });
+  });
+});
diff --git a/frontend/src/metabase/visualizations/lib/sync-settings.ts b/frontend/src/metabase/visualizations/lib/sync-settings.ts
index de83fd03e89..cff705c3925 100644
--- a/frontend/src/metabase/visualizations/lib/sync-settings.ts
+++ b/frontend/src/metabase/visualizations/lib/sync-settings.ts
@@ -27,10 +27,10 @@ export function syncVizSettingsWithSeries(
   const series = _series?.[0];
   const previousSeries = _previousSeries?.[0];
 
-  if (series && !series.error) {
+  if (series?.data && !series?.error) {
     newSettings = syncTableColumnSettings(newSettings, series);
 
-    if (previousSeries && !previousSeries.error) {
+    if (previousSeries?.data && !previousSeries?.error) {
       newSettings = syncGraphMetricSettings(
         newSettings,
         series,
-- 
GitLab