This is an automated email from the ASF dual-hosted git repository.

rusackas pushed a commit to branch rls-modal-linting
in repository https://gitbox.apache.org/repos/asf/superset.git


The following commit(s) were added to refs/heads/rls-modal-linting by this push:
     new 00b83348ad chore(debt): cleaning up RLS modal linter warnings
00b83348ad is described below

commit 00b83348ad6a7e911a5a584041da71d5212d661a
Author: Evan Rusackas <[email protected]>
AuthorDate: Sun Jan 28 14:40:52 2024 -0700

    chore(debt): cleaning up RLS modal linter warnings
---
 .../src/features/rls/RowLevelSecurityModal.tsx     | 64 +++++++++++-----------
 1 file changed, 32 insertions(+), 32 deletions(-)

diff --git a/superset-frontend/src/features/rls/RowLevelSecurityModal.tsx 
b/superset-frontend/src/features/rls/RowLevelSecurityModal.tsx
index 7e4143e582..b420073414 100644
--- a/superset-frontend/src/features/rls/RowLevelSecurityModal.tsx
+++ b/superset-frontend/src/features/rls/RowLevelSecurityModal.tsx
@@ -162,16 +162,7 @@ function RowLevelSecurityModal(props: 
RowLevelSecurityModalProps) {
     } else if (rule?.id !== null && !loading && !fetchError) {
       fetchResource(rule.id as number);
     }
-  }, [rule]);
-
-  useEffect(() => {
-    if (resource) {
-      setCurrentRule({ ...resource, id: rule?.id });
-      const selectedTableAndRoles = getSelectedData();
-      updateRuleState('tables', selectedTableAndRoles?.tables || []);
-      updateRuleState('roles', selectedTableAndRoles?.roles || []);
-    }
-  }, [resource]);
+  }, [rule, fetchError, fetchResource, isEditMode, loading]);
 
   // find selected tables and roles
   const getSelectedData = useCallback(() => {
@@ -200,13 +191,42 @@ function RowLevelSecurityModal(props: 
RowLevelSecurityModalProps) {
     });
 
     return { tables, roles };
-  }, [resource?.tables, resource?.roles]);
+  }, [resource]);
+
+  const updateRuleState = (name: string, value: any) => {
+    setCurrentRule(currentRuleData => ({
+      ...currentRuleData,
+      [name]: value,
+    }));
+  };
+
+  useEffect(() => {
+    if (resource) {
+      setCurrentRule({ ...resource, id: rule?.id });
+      const selectedTableAndRoles = getSelectedData();
+      updateRuleState('tables', selectedTableAndRoles?.tables || []);
+      updateRuleState('roles', selectedTableAndRoles?.roles || []);
+    }
+  }, [resource, getSelectedData, rule?.id]);
 
   // validate
   const currentRuleSafe = currentRule || {};
   useEffect(() => {
+    // * state validators *
+    const validate = () => {
+      if (
+        currentRuleSafe?.name &&
+        currentRuleSafe?.clause &&
+        currentRuleSafe?.tables?.length
+      ) {
+        setDisableSave(false);
+      } else {
+        setDisableSave(true);
+      }
+    };
+
     validate();
-  }, [currentRuleSafe.name, currentRuleSafe.clause, currentRuleSafe?.tables]);
+  }, [currentRuleSafe?.name, currentRuleSafe?.clause, 
currentRuleSafe?.tables]);
 
   // * event handlers *
   type SelectValue = {
@@ -214,13 +234,6 @@ function RowLevelSecurityModal(props: 
RowLevelSecurityModalProps) {
     label: string;
   };
 
-  const updateRuleState = (name: string, value: any) => {
-    setCurrentRule(currentRuleData => ({
-      ...currentRuleData,
-      [name]: value,
-    }));
-  };
-
   const onTextChange = (target: HTMLInputElement | HTMLTextAreaElement) => {
     updateRuleState(target.name, target.value);
   };
@@ -318,19 +331,6 @@ function RowLevelSecurityModal(props: 
RowLevelSecurityModalProps) {
     [],
   );
 
-  // * state validators *
-  const validate = () => {
-    if (
-      currentRule?.name &&
-      currentRule?.clause &&
-      currentRule.tables?.length
-    ) {
-      setDisableSave(false);
-    } else {
-      setDisableSave(true);
-    }
-  };
-
   return (
     <StyledModal
       className="no-content-padding"

Reply via email to