fixed updating users on roles and users

main
alex 2023-09-16 11:54:19 +02:00
parent ccc405115d
commit c080c2a9af
4 changed files with 131 additions and 19 deletions

View File

@ -15,6 +15,8 @@ export function UsersProvider({ children }) {
const [users, setUsers] = useState([]); const [users, setUsers] = useState([]);
const [roles, setRoles] = useState([]); const [roles, setRoles] = useState([]);
console.log("usersProvider", users, roles);
return ( return (
<UsersContext.Provider <UsersContext.Provider
value={{ value={{

View File

@ -479,9 +479,39 @@ export function handleWebSocketMessage(
...arr, ...arr,
{ RoleId: body.Id, Permissions: [] }, { RoleId: body.Id, Permissions: [] },
]); ]);
usersContext.setRoles((arr) => [...arr, body]);
break; break;
case ReceivedMessagesCommands.AdminAreaRoleUpdated: case ReceivedMessagesCommands.AdminAreaRoleUpdated:
adminAreaRolesContext.setRoles((arr) => { 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 newArr = [...arr];
const arrIndex = arr.findIndex((arr1) => arr1.Id === body.RoleId); const arrIndex = arr.findIndex((arr1) => arr1.Id === body.RoleId);
@ -497,7 +527,7 @@ export function handleWebSocketMessage(
} }
return newArr; return newArr;
}); }); */
if ( if (
body.Changes.AddedPermissions !== undefined || body.Changes.AddedPermissions !== undefined ||
@ -549,6 +579,42 @@ export function handleWebSocketMessage(
case ReceivedMessagesCommands.AdminAreaUpdateRoleSortingOrder: case ReceivedMessagesCommands.AdminAreaUpdateRoleSortingOrder:
adminAreaRolesContext.setRoles((arr) => { adminAreaRolesContext.setRoles((arr) => {
const newArr = [...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( const updatedRoleIndex = newArr.findIndex(
(role) => role.Id === body.RoleId (role) => role.Id === body.RoleId
@ -588,8 +654,47 @@ export function handleWebSocketMessage(
newArr.sort((a, b) => a.SortingOrder - b.SortingOrder); 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; return newArr;
}); });
break; break;
case ReceivedMessagesCommands.AdminAreaRoleDeleted: case ReceivedMessagesCommands.AdminAreaRoleDeleted:
adminAreaRolesContext.setRoles((arr) => { adminAreaRolesContext.setRoles((arr) => {
@ -717,6 +822,14 @@ export function handleWebSocketMessage(
Avatar: "", Avatar: "",
}, },
]); ]);
adminAreaRolesContext.setUsers((arr) => [
...arr,
{
Id: body.Id,
RoleId: body.RoleId,
},
]);
break; break;
case ReceivedMessagesCommands.AllUsersUserDeleted: case ReceivedMessagesCommands.AllUsersUserDeleted:
usersContext.setUsers((arr) => { usersContext.setUsers((arr) => {
@ -727,6 +840,14 @@ export function handleWebSocketMessage(
return newArr; return newArr;
}); });
adminAreaRolesContext.setUsers((arr) => {
let newArr = [...arr];
newArr = newArr.filter((user) => user.Id !== body.UserId);
return newArr;
});
appContext.setUsers((arr) => { appContext.setUsers((arr) => {
let newArr = [...arr]; let newArr = [...arr];
@ -734,19 +855,6 @@ export function handleWebSocketMessage(
return newArr; return newArr;
}); });
/*
if (body.ScannerId !== "") {
setScanners((arr) => {
let newArr = [...arr];
newArr[
newArr.findIndex((scanner) => scanner.Id === body.ScannerId)
].UsedByUserId = "";
return newArr;
});
} */
break; break;
case ReceivedMessagesCommands.AllUsersUserDeactivation: case ReceivedMessagesCommands.AllUsersUserDeactivation:
usersContext.setUsers((arr) => { usersContext.setUsers((arr) => {

View File

@ -373,9 +373,9 @@ function Role({
<MyAvatar <MyAvatar
key={user.Id} key={user.Id}
avatarWidth={26} avatarWidth={26}
avatar={userInAppContext.Avatar} avatar={userInAppContext?.Avatar}
tooltip tooltip
tooltipTitle={userInAppContext.Username} tooltipTitle={userInAppContext?.Username}
/> />
); );
}); });

View File

@ -119,7 +119,9 @@ export default function CreateUserModal({ isModalOpen, setIsModalOpen }) {
onChange={(e) => setSelectedRoleId(e)} onChange={(e) => setSelectedRoleId(e)}
placeholder={t("allUsers.createUserModal.form.role.placeholder")} placeholder={t("allUsers.createUserModal.form.role.placeholder")}
> >
{usersContext.roles.map((role) => ( {usersContext.roles
.sort((a, b) => a.SortingOrder - b.SortingOrder)
.map((role) => (
<Select.Option key={role.Id}>{role.DisplayName}</Select.Option> <Select.Option key={role.Id}>{role.DisplayName}</Select.Option>
))} ))}
</Select> </Select>