diff --git a/src/Contexts/UsersContext.js b/src/Contexts/UsersContext.js index f3ba0c7..2dd1c03 100644 --- a/src/Contexts/UsersContext.js +++ b/src/Contexts/UsersContext.js @@ -15,6 +15,8 @@ export function UsersProvider({ children }) { const [users, setUsers] = useState([]); const [roles, setRoles] = useState([]); + console.log("usersProvider", users, roles); + return ( [...arr, body]); break; case ReceivedMessagesCommands.AdminAreaRoleUpdated: adminAreaRolesContext.setRoles((arr) => { + return arr.map((role) => { + if (role.Id === body.RoleId) { + if (body.Changes.DisplayName !== undefined) { + role.DisplayName = body.Changes.DisplayName; + } + if (body.Changes.Description !== undefined) { + role.Description = body.Changes.Description; + } + } + return role; + }); + }); + + usersContext.setRoles((arr) => { + return arr.map((role) => { + if (role.Id === body.RoleId) { + if (body.Changes.DisplayName !== undefined) { + role.DisplayName = body.Changes.DisplayName; + } + if (body.Changes.Description !== undefined) { + role.Description = body.Changes.Description; + } + } + return role; + }); + }); + + /*adminAreaRolesContext.setRoles((arr) => { const newArr = [...arr]; const arrIndex = arr.findIndex((arr1) => arr1.Id === body.RoleId); @@ -497,7 +527,7 @@ export function handleWebSocketMessage( } return newArr; - }); + }); */ if ( body.Changes.AddedPermissions !== undefined || @@ -549,6 +579,42 @@ export function handleWebSocketMessage( case ReceivedMessagesCommands.AdminAreaUpdateRoleSortingOrder: adminAreaRolesContext.setRoles((arr) => { const newArr = [...arr]; + const updatedRoleIndex = newArr.findIndex( + (role) => role.Id === body.RoleId + ); + + if (updatedRoleIndex === -1) return newArr; + + const { SortingOrder } = newArr[updatedRoleIndex]; + const { Direction } = body; + + newArr[updatedRoleIndex].SortingOrder += Direction === 0 ? -1 : 1; + + const newSortingOrder = newArr[updatedRoleIndex].SortingOrder; + + newArr.forEach((role) => { + if (role.Id !== newArr[updatedRoleIndex].Id) { + if (role.SortingOrder === newSortingOrder) { + role.SortingOrder = SortingOrder; + } else if ( + role.SortingOrder < SortingOrder && + role.SortingOrder >= newSortingOrder + ) { + role.SortingOrder += 1; + } else if ( + role.SortingOrder > SortingOrder && + role.SortingOrder <= newSortingOrder + ) { + role.SortingOrder -= 1; + } + } + }); + + newArr.sort((a, b) => a.SortingOrder - b.SortingOrder); + + return newArr; + + /* const newArr = [...arr]; const updatedRoleIndex = newArr.findIndex( (role) => role.Id === body.RoleId @@ -588,8 +654,47 @@ export function handleWebSocketMessage( newArr.sort((a, b) => a.SortingOrder - b.SortingOrder); + return newArr; */ + }); + + usersContext.setRoles((arr) => { + const newArr = [...arr]; + const updatedRoleIndex = newArr.findIndex( + (role) => role.Id === body.RoleId + ); + + if (updatedRoleIndex === -1) return newArr; + + const { SortingOrder } = newArr[updatedRoleIndex]; + const { Direction } = body; + + newArr[updatedRoleIndex].SortingOrder += Direction === 0 ? -1 : 1; + + const newSortingOrder = newArr[updatedRoleIndex].SortingOrder; + + newArr.forEach((role) => { + if (role.Id !== newArr[updatedRoleIndex].Id) { + if (role.SortingOrder === newSortingOrder) { + role.SortingOrder = SortingOrder; + } else if ( + role.SortingOrder < SortingOrder && + role.SortingOrder >= newSortingOrder + ) { + role.SortingOrder += 1; + } else if ( + role.SortingOrder > SortingOrder && + role.SortingOrder <= newSortingOrder + ) { + role.SortingOrder -= 1; + } + } + }); + + newArr.sort((a, b) => a.SortingOrder - b.SortingOrder); + return newArr; }); + break; case ReceivedMessagesCommands.AdminAreaRoleDeleted: adminAreaRolesContext.setRoles((arr) => { @@ -717,6 +822,14 @@ export function handleWebSocketMessage( Avatar: "", }, ]); + + adminAreaRolesContext.setUsers((arr) => [ + ...arr, + { + Id: body.Id, + RoleId: body.RoleId, + }, + ]); break; case ReceivedMessagesCommands.AllUsersUserDeleted: usersContext.setUsers((arr) => { @@ -727,6 +840,14 @@ export function handleWebSocketMessage( return newArr; }); + adminAreaRolesContext.setUsers((arr) => { + let newArr = [...arr]; + + newArr = newArr.filter((user) => user.Id !== body.UserId); + + return newArr; + }); + appContext.setUsers((arr) => { let newArr = [...arr]; @@ -734,19 +855,6 @@ export function handleWebSocketMessage( return newArr; }); - - /* - if (body.ScannerId !== "") { - setScanners((arr) => { - let newArr = [...arr]; - - newArr[ - newArr.findIndex((scanner) => scanner.Id === body.ScannerId) - ].UsedByUserId = ""; - - return newArr; - }); - } */ break; case ReceivedMessagesCommands.AllUsersUserDeactivation: usersContext.setUsers((arr) => { diff --git a/src/Pages/AdminArea/Roles/index.js b/src/Pages/AdminArea/Roles/index.js index bc8c251..8028fa3 100644 --- a/src/Pages/AdminArea/Roles/index.js +++ b/src/Pages/AdminArea/Roles/index.js @@ -373,9 +373,9 @@ function Role({ ); }); diff --git a/src/Pages/AllUsers/CreateUserModal.js b/src/Pages/AllUsers/CreateUserModal.js index f7e2a3b..b0f510c 100644 --- a/src/Pages/AllUsers/CreateUserModal.js +++ b/src/Pages/AllUsers/CreateUserModal.js @@ -119,9 +119,11 @@ export default function CreateUserModal({ isModalOpen, setIsModalOpen }) { onChange={(e) => setSelectedRoleId(e)} placeholder={t("allUsers.createUserModal.form.role.placeholder")} > - {usersContext.roles.map((role) => ( - {role.DisplayName} - ))} + {usersContext.roles + .sort((a, b) => a.SortingOrder - b.SortingOrder) + .map((role) => ( + {role.DisplayName} + ))}