= {};
@@ -163,13 +160,17 @@ export default function PermissionsTable() {
});
setEditablePermissions({ admin: adminPerms, member: memberPerms });
- } catch (error) {
+ } catch {
toast.error('Failed to load permissions');
- console.error('Error loading permissions:', error);
} finally {
setIsLoading(false);
}
- };
+ }, [activeOrgId, getOrganizationPermissions]);
+
+ // ✔ FIX: safe dependency array
+ useEffect(() => {
+ loadPermissions();
+ }, [loadPermissions]);
const handleAdminPermissionChange = (
permissionKey: keyof OrganizationPermissions,
@@ -206,29 +207,26 @@ export default function PermissionsTable() {
setIsLoading(true);
try {
- // Merge admin and member permissions
const mergedPermissions: OrganizationPermissions = { ...permissions! };
defaultPermissionConfigs.forEach(config => {
const adminValue = editablePermissions.admin[config.key];
const memberValue = editablePermissions.member[config.key];
- if (adminValue !== undefined) {
+ if (adminValue !== undefined)
mergedPermissions[config.key] = adminValue;
- }
- if (memberValue !== undefined && config.key in mergedPermissions) {
+ if (memberValue !== undefined)
mergedPermissions[config.key] = memberValue;
- }
});
await updateOrganizationPermissions(activeOrgId, mergedPermissions);
setIsEditing(false);
setIsCustom(true);
setPermissions(mergedPermissions);
+
toast.success('Permissions updated successfully');
- } catch (error) {
+ } catch {
toast.error('Failed to update permissions');
- console.error('Error updating permissions:', error);
} finally {
setIsLoading(false);
}
@@ -240,13 +238,13 @@ export default function PermissionsTable() {
setIsLoading(true);
try {
await resetOrganizationPermissions(activeOrgId);
- await loadPermissions(); // Reload to get default permissions
+ await loadPermissions();
setIsEditing(false);
setIsCustom(false);
+
toast.success('Permissions reset to defaults');
- } catch (error) {
+ } catch {
toast.error('Failed to reset permissions');
- console.error('Error resetting permissions:', error);
} finally {
setIsLoading(false);
}
@@ -260,11 +258,9 @@ export default function PermissionsTable() {
const editableValue = editablePermissions[role][config.key];
if (editableValue !== undefined) return editableValue;
}
-
if (permissions && permissions[config.key] !== undefined) {
return permissions[config.key];
}
-
return typeof config[role] === 'object' ? config[role].value : config[role];
};
@@ -305,6 +301,7 @@ export default function PermissionsTable() {
)}
+
{canEdit && (
{isEditing
@@ -338,6 +335,7 @@ export default function PermissionsTable() {
Reset to Defaults
+
{isLoading ? 'Saving...' : 'Save Changes'}
+