update appContext on user change to live change username and avatar for all users

main
alex 2023-09-16 08:40:10 +02:00
parent 40d5e2c350
commit ccc405115d
6 changed files with 82 additions and 97 deletions

View File

@ -10,53 +10,32 @@ export function MyAvatar({
allUsers, allUsers,
userId, userId,
}) { }) {
const MyDefaultAvatar = () => { if (!avatar) {
if (tooltip) { if (allUsers && userId) {
return (
<Tooltip placement="top" trigger="hover" title={tooltipTitle}>
<Avatar size={avatarWidth} icon={<UserOutlined />} />
</Tooltip>
);
}
return <Avatar size={avatarWidth} icon={<UserOutlined />} />;
};
if (avatar === undefined || avatar === null || avatar === "") {
if (allUsers !== undefined && userId !== undefined) {
const user = allUsers.find((u) => u.Id === userId); const user = allUsers.find((u) => u.Id === userId);
if (user) {
if (user === undefined) return <MyDefaultAvatar />; avatar = user.Avatar;
tooltipTitle = user.Username;
avatar = user.Avatar; }
tooltipTitle = user.Username;
} else {
return <MyDefaultAvatar />;
} }
} }
const MyAvat = () => { const avatarContent = avatar ? (
if (avatar === "") return <MyDefaultAvatar />; <Avatar
size={avatarWidth}
src={Constants.STATIC_CONTENT_ADDRESS + "avatars/" + avatar}
/>
) : (
<Avatar size={avatarWidth} icon={<UserOutlined />} />
);
return ( return tooltip ? (
<Avatar <Tooltip placement="top" trigger="hover" title={tooltipTitle}>
size={avatarWidth} {avatarContent}
src={Constants.STATIC_CONTENT_ADDRESS + "avatars/" + avatar} </Tooltip>
/> ) : (
); avatarContent
}; );
if (tooltip) {
return (
<Tooltip placement="top" trigger="hover" title={tooltipTitle}>
<>
<MyAvat />
</>
</Tooltip>
);
}
return <MyAvat />;
} }
export function MyUserAvatar({ avatar, size = "default" }) { export function MyUserAvatar({ avatar, size = "default" }) {

View File

@ -12,6 +12,7 @@ export const useAdminAreaRolesContext = () => useContext(AdminAreaRolesContext);
export function AdminAreaRolesProvider({ children }) { export function AdminAreaRolesProvider({ children }) {
const [roles, setRoles] = useState([]); const [roles, setRoles] = useState([]);
const [rolesPermissions, setRolesPermissions] = useState([]); const [rolesPermissions, setRolesPermissions] = useState([]);
const [users, setUsers] = useState([]); // { Id, RoleId }
return ( return (
<AdminAreaRolesContext.Provider <AdminAreaRolesContext.Provider
@ -20,6 +21,8 @@ export function AdminAreaRolesProvider({ children }) {
setRoles, setRoles,
rolesPermissions, rolesPermissions,
setRolesPermissions, setRolesPermissions,
users,
setUsers,
}} }}
> >
{children} {children}

View File

@ -14,7 +14,8 @@ export function AppProvider({ children }) {
const userId = useRef(""); // used for some conditions in webSocket message handler const userId = useRef(""); // used for some conditions in webSocket message handler
const [userPermissions, setUserPermissions] = useState([]); const [userPermissions, setUserPermissions] = useState([]);
const [users, setUsers] = useState([]); // TODO: realy need this? // used for avatars and the tooltip for the avatar
const [users, setUsers] = useState([]); // { Id, Username, Avatar}
return ( return (
<AppContext.Provider <AppContext.Provider

View File

@ -204,30 +204,11 @@ export function handleWebSocketMessage(
}); });
break; break;
case ReceivedMessagesCommands.UpdateUserSessions: case ReceivedMessagesCommands.UpdateUserSessions:
//setUser((arr) => ({ ...arr, Sessions: body }));
//userProfileContext.setUserProfile((arr) => ({ ...arr, Sessions: body }));
userProfileContext.setSessions(body); userProfileContext.setSessions(body);
break; break;
case ReceivedMessagesCommands.UpdateAllUsersUserAvatar: case ReceivedMessagesCommands.UpdateAllUsersUserAvatar:
/*setAllUsers((arr) => {
const newArr = [...arr];
newArr[arr.findIndex((arr1) => arr1.Id === body.UserId)].Avatar =
body.Avatar;
return newArr;
});*/
if (appContext.userId.current === body.UserId) { if (appContext.userId.current === body.UserId) {
sideBarContext.setAvatar(body.Avatar); sideBarContext.setAvatar(body.Avatar);
/*
userProfileContext.setUserProfile((user) => ({
...user,
avatar: body.Avatar,
})); */
} }
usersContext.setUsers((arr) => { usersContext.setUsers((arr) => {
@ -242,15 +223,17 @@ export function handleWebSocketMessage(
return newArr; return newArr;
}); });
/*
appContext.setUsers((arr) => { appContext.setUsers((arr) => {
const newArr = [...arr]; const newArr = [...arr];
newArr[arr.findIndex((arr1) => arr1.Id === body.UserId)].Avatar = const arrIndex = arr.findIndex((arr1) => arr1.Id === body.UserId);
body.Avatar;
if (arrIndex !== -1) {
newArr[arrIndex].Avatar = body.Avatar;
}
return newArr; return newArr;
}); */ });
break; break;
/*case ReceivedMessagesCommands.NewScanner: /*case ReceivedMessagesCommands.NewScanner:
setScanners((arr) => [...arr, body]); setScanners((arr) => [...arr, body]);
@ -353,8 +336,6 @@ export function handleWebSocketMessage(
newInputs[body.parameterName].data = body.data; newInputs[body.parameterName].data = body.data;
} }
//newInputs[body.parameterName].value = body.value;
return newInputs; return newInputs;
}); });
} else { } else {
@ -472,6 +453,18 @@ export function handleWebSocketMessage(
return newArr; return newArr;
}); });
appContext.setUsers((arr) => {
const newArr = [...arr];
const arrIndex = arr.findIndex((user) => user.Id === body.UserId);
if (arrIndex !== -1) {
newArr[arrIndex].Username = body.Changes.Username;
}
return newArr;
});
} }
if (body.Changes.Email !== undefined) { if (body.Changes.Email !== undefined) {
@ -642,19 +635,19 @@ export function handleWebSocketMessage(
appContext.setUserPermissions(() => appContext.setUserPermissions(() =>
body.Permissions === null ? [] : body.Permissions body.Permissions === null ? [] : body.Permissions
); );
/*setUser((user) => {
const updatedUser = { ...user };
if (body.Permissions === null) {
updatedUser.Permissions = [];
} else {
updatedUser.Permissions = body.Permissions;
}
return updatedUser;
}); */
} }
adminAreaRolesContext.setUsers((arr) => {
const newArr = [...arr];
const arrIndex = arr.findIndex((user) => user.Id === body.UserId);
if (arrIndex !== -1) {
newArr[arrIndex].RoleId = body.RoleId;
}
return newArr;
});
break; break;
case ReceivedMessagesCommands.RolePermissionsUpdated: case ReceivedMessagesCommands.RolePermissionsUpdated:
if ( if (
@ -715,6 +708,15 @@ export function handleWebSocketMessage(
Deactivated: body.Deactivated, Deactivated: body.Deactivated,
}, },
]); ]);
appContext.setUsers((arr) => [
...arr,
{
Id: body.Id,
Username: body.Username,
Avatar: "",
},
]);
break; break;
case ReceivedMessagesCommands.AllUsersUserDeleted: case ReceivedMessagesCommands.AllUsersUserDeleted:
usersContext.setUsers((arr) => { usersContext.setUsers((arr) => {
@ -725,6 +727,14 @@ export function handleWebSocketMessage(
return newArr; return newArr;
}); });
appContext.setUsers((arr) => {
let newArr = [...arr];
newArr = newArr.filter((user) => user.Id !== body.UserId);
return newArr;
});
/* /*
if (body.ScannerId !== "") { if (body.ScannerId !== "") {
setScanners((arr) => { setScanners((arr) => {
@ -752,20 +762,7 @@ export function handleWebSocketMessage(
}); });
break; break;
case ReceivedMessagesCommands.NewUserApiKeyCreated: case ReceivedMessagesCommands.NewUserApiKeyCreated:
/*userProfileContext.setUserProfile((user) => ({
...user,
ApiKeys: [...user.ApiKeys, body],
})); */
userProfileContext.setApiKeys((arr) => [...arr, body]); userProfileContext.setApiKeys((arr) => [...arr, body]);
/*setUser((user) => {
const updatedUser = { ...user };
updatedUser.ApiKeys.push(body);
return updatedUser;
});*/
break; break;
case ReceivedMessagesCommands.DeletedUserApiKey: case ReceivedMessagesCommands.DeletedUserApiKey:
userProfileContext.setApiKeys((arr) => userProfileContext.setApiKeys((arr) =>

View File

@ -121,6 +121,7 @@ export default function AdminAreaRoles() {
myFetch("/adminarea/roles", "GET").then((data) => { myFetch("/adminarea/roles", "GET").then((data) => {
adminAreaRolesContext.setRoles(data.Roles); adminAreaRolesContext.setRoles(data.Roles);
adminAreaRolesContext.setRolesPermissions(data.RolesPermissions); adminAreaRolesContext.setRolesPermissions(data.RolesPermissions);
adminAreaRolesContext.setUsers(data.Users);
}); });
}, []); }, []);
@ -354,7 +355,9 @@ function Role({
}; };
const getUsersInRole = () => { const getUsersInRole = () => {
return appContext.users.filter((user) => user.RoleId === role.Id); return adminAreaRolesContext.users.filter(
(user) => user.RoleId === role.Id
);
}; };
const UserAvatarsInRole = () => { const UserAvatarsInRole = () => {
@ -364,13 +367,15 @@ function Role({
let avatars = []; let avatars = [];
usersInRole.forEach((user) => { usersInRole.forEach((user) => {
const userInAppContext = appContext.users.find((u) => u.Id === user.Id);
avatars.push( avatars.push(
<MyAvatar <MyAvatar
key={user.Id} key={user.Id}
avatarWidth={26} avatarWidth={26}
avatar={user.Avatar} avatar={userInAppContext.Avatar}
tooltip tooltip
tooltipTitle={user.Username} tooltipTitle={userInAppContext.Username}
/> />
); );
}); });

View File

@ -19,7 +19,7 @@ const Loading = () => {
// TODO: Undo this // TODO: Undo this
/* /*
<text x="50%" y="50%" fill="transparent" textAnchor="middle"> <text x="50%" y="50%" fill="transparent" textAnchor="middle">
J A N E X J A N N E X
</text> </text>
*/ */