diff --git a/packages/web/src/components/PermissionCatalogField/ActionField.jsx b/packages/web/src/components/PermissionCatalogField/ActionField.jsx
index 43d86de8..3bf2dde6 100644
--- a/packages/web/src/components/PermissionCatalogField/ActionField.jsx
+++ b/packages/web/src/components/PermissionCatalogField/ActionField.jsx
@@ -1,46 +1,37 @@
-import React, { useEffect, useRef } from 'react';
+import React from 'react';
import { useFormContext } from 'react-hook-form';
-import { Typography } from '@mui/material';
import PropTypes from 'prop-types';
import ControlledCheckbox from 'components/ControlledCheckbox';
const ActionField = ({ action, subject, disabled, name, syncIsCreator }) => {
- const { watch, formState, resetField } = useFormContext();
-
- const actionFieldName = `${name}.${subject.key}.${action.key}.value`;
- const actionFieldValue = watch(actionFieldName);
+ const { formState, resetField } = useFormContext();
+ const actionDefaultValue =
+ formState.defaultValues?.[name]?.[subject.key]?.[action.key].value;
const conditionFieldName = `${name}.${subject.key}.${action.key}.conditions.isCreator`;
const conditionFieldTouched =
formState.touchedFields?.[name]?.[subject.key]?.[action.key]?.conditions
?.isCreator === true;
- const defaultActionFieldValueRef = useRef(actionFieldValue);
-
- useEffect(() => {
- if (defaultActionFieldValueRef?.current === undefined) {
- defaultActionFieldValueRef.current = actionFieldValue;
- } else if (
+ const handleSyncIsCreator = (newValue) => {
+ if (
syncIsCreator &&
- defaultActionFieldValueRef?.current === false &&
+ actionDefaultValue === false &&
!conditionFieldTouched
) {
- resetField(conditionFieldName, { defaultValue: actionFieldValue });
+ resetField(conditionFieldName, { defaultValue: newValue });
}
- }, [actionFieldValue, syncIsCreator]);
+ };
return (
-
- {action.subjects.includes(subject.key) && (
-
- )}
-
- {!action.subjects.includes(subject.key) && '-'}
-
+ {
+ handleSyncIsCreator(value);
+ }}
+ />
);
};
diff --git a/packages/web/src/components/PermissionCatalogField/index.ee.jsx b/packages/web/src/components/PermissionCatalogField/index.ee.jsx
index 3846ada5..5f2bf909 100644
--- a/packages/web/src/components/PermissionCatalogField/index.ee.jsx
+++ b/packages/web/src/components/PermissionCatalogField/index.ee.jsx
@@ -70,13 +70,18 @@ const PermissionCatalogField = ({
{permissionCatalog?.actions.map((action) => (
-
+
+ {action.subjects.includes(subject.key) && (
+
+ )}
+ {!action.subjects.includes(subject.key) && '-'}
+
))}
diff --git a/packages/web/src/pages/EditRole/index.ee.jsx b/packages/web/src/pages/EditRole/index.ee.jsx
index 29e0e584..1ed4881c 100644
--- a/packages/web/src/pages/EditRole/index.ee.jsx
+++ b/packages/web/src/pages/EditRole/index.ee.jsx
@@ -27,11 +27,12 @@ export default function EditRole() {
const formatMessage = useFormatMessage();
const navigate = useNavigate();
const { roleId } = useParams();
- const { data, isLoading: isRoleLoading } = useRole({ roleId });
+ const { data: roleData, isLoading: isRoleLoading } = useRole({ roleId });
const { mutateAsync: updateRole, isPending: isUpdateRolePending } =
useAdminUpdateRole(roleId);
const { data: permissionCatalogData } = usePermissionCatalog();
- const role = data?.data;
+ const role = roleData?.data;
+ const permissionCatalog = permissionCatalogData?.data;
const enqueueSnackbar = useEnqueueSnackbar();
const handleRoleUpdate = async (roleData) => {
@@ -56,24 +57,20 @@ export default function EditRole() {
}
};
- const roleWithComputedPermissions = getRoleWithComputedPermissions(role);
+ const defaultValues = React.useMemo(() => {
+ const roleWithComputedPermissions = getRoleWithComputedPermissions(role);
+ const computedPermissionsDefaultValues =
+ getComputedPermissionsDefaultValues(permissionCatalog);
- const computedPermissionsDefaultValues = React.useMemo(
- () => getComputedPermissionsDefaultValues(permissionCatalogData?.data),
- [permissionCatalogData],
- );
-
- const defaultValues = React.useMemo(
- () => ({
+ return {
...roleWithComputedPermissions,
computedPermissions: merge(
{},
computedPermissionsDefaultValues,
roleWithComputedPermissions.computedPermissions,
),
- }),
- [roleWithComputedPermissions, computedPermissionsDefaultValues],
- );
+ };
+ }, [role, permissionCatalog]);
return (
@@ -113,13 +110,11 @@ export default function EditRole() {
/>
>
)}
-
-