From 1bb2f18765e6f83e6e7e0cb90d3e3e6f2dc5fb4d Mon Sep 17 00:00:00 2001 From: Paul Rosenzweig <paulrosenzweig@users.noreply.github.com> Date: Mon, 20 Jul 2020 14:55:11 -0400 Subject: [PATCH] avoid render loop that POSTed field values to the server (#12955) --- .../admin/datamodel/components/FieldRemapping.jsx | 15 ++++++++++++--- .../scenarios/admin/datamodel/field.cy.spec.js | 3 +-- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/frontend/src/metabase/admin/datamodel/components/FieldRemapping.jsx b/frontend/src/metabase/admin/datamodel/components/FieldRemapping.jsx index 55616a44127..f90e16f8a8c 100644 --- a/frontend/src/metabase/admin/datamodel/components/FieldRemapping.jsx +++ b/frontend/src/metabase/admin/datamodel/components/FieldRemapping.jsx @@ -328,9 +328,18 @@ export class ValueRemappings extends React.Component { this._updateEditingRemappings(this.props.remappings); } - componentWillReceiveProps(nextProps) { - if (nextProps.remappings !== this.props.remappings) { - this._updateEditingRemappings(nextProps.remappings); + componentDidUpdate(prevProps) { + const { remappings } = this.props; + if ( + !// check if the Maps are different + ( + prevProps.remappings && + remappings && + prevProps.remappings.size === remappings.size && + [...remappings].every(([k, v]) => prevProps.remappings.get(k) === v) + ) + ) { + this._updateEditingRemappings(remappings); } } diff --git a/frontend/test/metabase/scenarios/admin/datamodel/field.cy.spec.js b/frontend/test/metabase/scenarios/admin/datamodel/field.cy.spec.js index 37dc97875b9..a51f4681d98 100644 --- a/frontend/test/metabase/scenarios/admin/datamodel/field.cy.spec.js +++ b/frontend/test/metabase/scenarios/admin/datamodel/field.cy.spec.js @@ -142,11 +142,10 @@ describe("scenarios > admin > datamodel > field", () => { cy.contains("Title"); }); - it.skip("lets you change to 'Custom mapping' and set custom values (Issue #12771)", () => { + it("lets you change to 'Custom mapping' and set custom values (Issue #12771)", () => { visitAlias("@ORDERS_QUANTITY_URL"); cy.contains("Use original value").click(); - // *** Clicking this button starts a loop cy.contains("Custom mapping").click(); cy.get('input[value="0"]') -- GitLab