update appContext on user change to live change username and avatar for all users
parent
40d5e2c350
commit
ccc405115d
|
@ -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" }) {
|
||||||
|
|
|
@ -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}
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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) =>
|
||||||
|
|
|
@ -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}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
|
@ -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>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue