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"