Skip to content

Commit 9c00086

Browse files
authored
Merge pull request #2910 from objectcomputing/develop
Prep 0.8.16 release
2 parents 612dbe3 + 56d656f commit 9c00086

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+990
-449
lines changed

server/build.gradle

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ plugins {
77
id "jacoco"
88
}
99

10-
version "0.8.15"
10+
version "0.8.16"
1111
group "com.objectcomputing.checkins"
1212

1313
repositories {
@@ -63,7 +63,7 @@ configurations {
6363
}
6464

6565
dependencies {
66-
runtimeOnly("org.flywaydb:flyway-database-postgresql")
66+
runtimeOnly("org.flywaydb:flyway-database-postgresql:11.3.4")
6767
runtimeOnly("org.yaml:snakeyaml")
6868
runtimeOnly("ch.qos.logback:logback-classic")
6969
runtimeOnly("org.postgresql:postgresql")

web-ui/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "web-ui",
3-
"version": "0.8.15",
3+
"version": "0.8.16",
44
"private": true,
55
"type": "module",
66
"dependencies": {
@@ -20,7 +20,7 @@
2020
"@mui/styles": "^5.15.14",
2121
"@mui/x-date-pickers": "^7.3.1",
2222
"@tinymce/tinymce-react": "^5.0.0",
23-
"axios": "^1.7.4",
23+
"axios": "^1.8.2",
2424
"canvas-confetti": "^1.6.0",
2525
"date-fns": "^2.24.0",
2626
"dayjs": "^1.11.11",

web-ui/src/api/roles.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,14 @@ export const getAllRoles = async cookie => {
99
});
1010
};
1111

12-
export const getAllUserRoles = async cookie => {
12+
export const getAllMemberRoles = async cookie => {
1313
return resolve({
1414
url: roleURL + '/members',
1515
headers: { 'X-CSRF-Header': cookie, Accept: 'application/json' }
1616
});
1717
};
1818

19-
export const removeUserFromRole = async (roleId, memberId, cookie) => {
19+
export const removeMemberFromRole = async (roleId, memberId, cookie) => {
2020
return resolve({
2121
method: 'DELETE',
2222
url: roleURL + `/members/${roleId}/${memberId}`,
@@ -28,7 +28,7 @@ export const removeUserFromRole = async (roleId, memberId, cookie) => {
2828
});
2929
};
3030

31-
export const addUserToRole = async (roleId, memberId, cookie) => {
31+
export const addMemberToRole = async (roleId, memberId, cookie) => {
3232
return resolve({
3333
method: 'POST',
3434
url: roleURL + '/members',

web-ui/src/components/action_item/ActionItemsPanel.test.jsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ const initialState = {
2929
teams: [],
3030
skills: [],
3131
roles: [],
32-
userRoles: [],
32+
memberRoles: [],
3333
memberSkills: [],
3434
memberProfiles: []
3535
}

web-ui/src/components/admin/roles/Roles.jsx

+23-20
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,18 @@ import React, { useContext, useEffect, useState } from 'react';
33
import { AppContext } from '../../../context/AppContext';
44
import {
55
SET_ROLES,
6-
SET_USER_ROLES,
6+
SET_MEMBER_ROLES,
77
UPDATE_TOAST
88
} from '../../../context/actions';
99
import {
10-
addUserToRole,
10+
addMemberToRole,
1111
addNewRole,
12-
removeUserFromRole,
12+
removeMemberFromRole,
1313
updateRole
1414
} from '../../../api/roles';
1515
import {
1616
selectCanEditMemberRolesPermission,
17-
noPermission,
17+
noPermission, selectMemberRoles, selectCsrfToken, selectRoles, selectMemberProfiles,
1818
} from '../../../context/selectors';
1919
import RoleUserCards from './RoleUserCards';
2020

@@ -52,8 +52,11 @@ import './Roles.css';
5252

5353
const Roles = () => {
5454
const { state, dispatch } = useContext(AppContext);
55-
// roles here is all possible roles, not the selected roles.
56-
const { csrf, memberProfiles, roles, userRoles } = state;
55+
56+
const csrf = selectCsrfToken(state);
57+
const memberProfiles = selectMemberProfiles(state);
58+
const roles = selectRoles(state); // all possible roles, not the selected roles.
59+
const memberRoles = selectMemberRoles(state);
5760

5861
const [showAddUser, setShowAddUser] = useState(false);
5962
const [showEditRole, setShowEditRole] = useState(false);
@@ -97,25 +100,25 @@ const Roles = () => {
97100
}
98101

99102
const newRoleToMemberMap = {};
100-
for (const userRole of userRoles || []) {
103+
for (const memberRole of memberRoles || []) {
101104
const role = roles.find(
102-
role => role.id === userRole?.memberRoleId?.roleId
105+
role => role.id === memberRole?.memberRoleId?.roleId
103106
);
104107
if (role) {
105108
let memberList = newRoleToMemberMap[role.role];
106109
if (!memberList) {
107110
memberList = newRoleToMemberMap[role.role] = [];
108111
}
109-
if (memberMap[userRole?.memberRoleId?.memberId] !== undefined) {
112+
if (memberMap[memberRole?.memberRoleId?.memberId] !== undefined) {
110113
memberList.push({
111-
...memberMap[userRole?.memberRoleId?.memberId],
114+
...memberMap[memberRole?.memberRoleId?.memberId],
112115
roleId: role.id
113116
});
114117
}
115118
}
116119
}
117120
setRoleToMemberMap(newRoleToMemberMap);
118-
}, [userRoles, memberProfiles, roles]);
121+
}, [memberRoles, memberProfiles, roles]);
119122

120123
const getRoleStats = role => {
121124
let members = roleToMemberMap[role];
@@ -125,20 +128,20 @@ const Roles = () => {
125128
const removeFromRole = async (member, role) => {
126129
const members = roleToMemberMap[role];
127130
const { roleId } = members.find(m => member.id === m.id);
128-
let res = await removeUserFromRole(roleId, member.id, csrf);
131+
let res = await removeMemberFromRole(roleId, member.id, csrf);
129132
let data =
130133
res.payload && res.payload.status === 200 && !res.error
131134
? res.payload
132135
: null;
133136
if (data) {
134137
// TODO: Remove role from map....
135-
const filtered = userRoles.filter(
136-
userRole =>
137-
userRole?.memberRoleId?.roleId !== roleId ||
138-
userRole?.memberRoleId?.memberId !== member.id
138+
const filtered = memberRoles.filter(
139+
memberRole =>
140+
memberRole?.memberRoleId?.roleId !== roleId ||
141+
memberRole?.memberRoleId?.memberId !== member.id
139142
);
140143
dispatch({
141-
type: SET_USER_ROLES,
144+
type: SET_MEMBER_ROLES,
142145
payload: filtered
143146
});
144147
window.snackDispatch({
@@ -153,14 +156,14 @@ const Roles = () => {
153156

154157
const addToRole = async member => {
155158
const role = roles.find(role => role.role === currentRole.role);
156-
let res = await addUserToRole(role.id, member.id, csrf);
159+
let res = await addMemberToRole(role.id, member.id, csrf);
157160
let data =
158161
res.payload && res.payload.data && !res.error ? res.payload.data : null;
159162
if (data) {
160163
setShowAddUser(false);
161164
dispatch({
162-
type: SET_USER_ROLES,
163-
payload: [...userRoles, data]
165+
type: SET_MEMBER_ROLES,
166+
payload: [...memberRoles, data]
164167
});
165168
window.snackDispatch({
166169
type: UPDATE_TOAST,

web-ui/src/components/admin/roles/Roles.test.jsx

+34-3
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,49 @@ const initialState = {
99
{ id: 2, name: 'Señora Test' },
1010
{ id: 3, name: 'Herr Test' }
1111
],
12+
memberRoles: [
13+
{ memberRoleId: { roleId: 1, memberId: 1 } },
14+
{ memberRoleId: { roleId: 2, memberId: 2 } },
15+
],
1216
roles: [
13-
{ id: 1, role: 'ADMIN', memberid: 1 },
14-
{ id: 2, role: 'PDL', memberid: 2 }
17+
{ id: 1, role: 'ADMIN', description: 'Administrator' },
18+
{ id: 2, role: 'PDL', description: 'Prof. Dev. Lead' },
19+
{ id: 3, role: 'MEMBER', description: 'A member of the org' }
1520
],
1621
userProfile: {
1722
name: 'Current User',
1823
role: ['MEMBER'],
24+
id: 1,
1925
permissions: [{ permission: 'CAN_EDIT_MEMBER_ROLES' }],
2026
},
2127
}
2228
};
2329

30+
const noPermState = {
31+
state: {
32+
memberProfiles: [
33+
{ id: 1, name: 'Señior Test' },
34+
{ id: 2, name: 'Señora Test' },
35+
{ id: 3, name: 'Herr Test' }
36+
],
37+
memberRoles: [
38+
{ memberRoleId: { roleId: 1, memberId: 1 } },
39+
{ memberRoleId: { roleId: 2, memberId: 2 } },
40+
],
41+
roles: [
42+
{ id: 1, role: 'ADMIN', description: 'Administrator' },
43+
{ id: 2, role: 'PDL', description: 'Prof. Dev. Lead' },
44+
{ id: 3, role: 'MEMBER', description: 'A member of the org' }
45+
],
46+
userProfile: {
47+
name: 'Current User',
48+
role: ['MEMBER'],
49+
id: 1,
50+
permissions: [],
51+
},
52+
}
53+
};
54+
2455
it('renders correctly', () => {
2556
snapshot(
2657
<AppContextProvider value={initialState}>
@@ -31,7 +62,7 @@ it('renders correctly', () => {
3162

3263
it('renders an error if user does not have appropriate permission', () => {
3364
snapshot(
34-
<AppContextProvider>
65+
<AppContextProvider value={noPermState}>
3566
<Roles />
3667
</AppContextProvider>
3768
);

0 commit comments

Comments
 (0)