Skip to content

Commit b249f2c

Browse files
authored
fix: add edit users sending up wrong data (#6923)
1 parent ead91ec commit b249f2c

4 files changed

Lines changed: 39 additions & 18 deletions

File tree

frontend/common/services/useGroup.ts

Lines changed: 30 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,17 @@ export const groupService = service
2727
}
2828
//Add the members
2929
if (query.users?.length) {
30-
const { error } = await baseQuery({
30+
const res = await baseQuery({
3131
body: { user_ids: query.users.map((u) => u.id) },
3232
method: 'POST',
33-
url: `organisations/${query.orgId}/groups/${data.id}/`,
33+
url: `organisations/${query.orgId}/groups/${data.id}/add-users/`,
3434
})
35+
if (res.error) {
36+
return { error: res.error }
37+
}
3538
}
3639
// Make the admins
37-
await Promise.all(
40+
const adminResults = await Promise.all(
3841
(query.usersToAddAdmin || []).map((v) =>
3942
createGroupAdmin(getStore(), {
4043
group: data.id,
@@ -43,6 +46,10 @@ export const groupService = service
4346
}),
4447
),
4548
)
49+
const adminError = adminResults.find((r: any) => r.error)
50+
if (adminError?.error) {
51+
return { error: adminError.error }
52+
}
4653
return { data }
4754
},
4855
}),
@@ -115,22 +122,28 @@ export const groupService = service
115122
return { error }
116123
}
117124
//Add the members
118-
if (query.users?.length) {
119-
await baseQuery({
120-
body: { user_ids: query.data.users.map((u) => u.id) },
125+
if (query.usersToAdd?.length) {
126+
const res = await baseQuery({
127+
body: { user_ids: query.usersToAdd },
121128
method: 'POST',
122129
url: `organisations/${query.orgId}/groups/${data.id}/add-users/`,
123130
})
131+
if (res.error) {
132+
return { error: res.error }
133+
}
124134
}
125135
if (query.usersToRemove?.length) {
126-
await baseQuery({
136+
const res = await baseQuery({
127137
body: { user_ids: query.usersToRemove },
128138
method: 'POST',
129139
url: `organisations/${query.orgId}/groups/${data.id}/remove-users/`,
130140
})
141+
if (res.error) {
142+
return { error: res.error }
143+
}
131144
}
132145
// Make the admins
133-
await Promise.all(
146+
const addAdminResults = await Promise.all(
134147
(query.usersToAddAdmin || []).map((v) =>
135148
createGroupAdmin(getStore(), {
136149
group: data.id,
@@ -139,8 +152,12 @@ export const groupService = service
139152
}),
140153
),
141154
)
155+
const addAdminError = addAdminResults.find((r: any) => r.error)
156+
if (addAdminError?.error) {
157+
return { error: addAdminError.error }
158+
}
142159

143-
await Promise.all(
160+
const removeAdminResults = await Promise.all(
144161
(query.usersToRemoveAdmin || []).map((v) =>
145162
deleteGroupAdmin(getStore(), {
146163
group: data.id,
@@ -149,6 +166,10 @@ export const groupService = service
149166
}),
150167
),
151168
)
169+
const removeAdminError = removeAdminResults.find((r: any) => r.error)
170+
if (removeAdminError?.error) {
171+
return { error: removeAdminError.error }
172+
}
152173
return { data }
153174
},
154175
}),

frontend/common/types/requests.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -666,8 +666,7 @@ export type Req = {
666666
updateGroup: Req['createGroup'] & {
667667
orgId: number
668668
data: UserGroup
669-
users: UserGroup['users']
670-
669+
usersToAdd: number[] | null
671670
usersToAddAdmin: number[] | null
672671
usersToRemoveAdmin: number[] | null
673672
usersToRemove: number[] | null

frontend/web/components/UsersGroups.tsx

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ const UsersGroups: FC<UsersGroupsType> = ({ orgId, user }) => {
8888
updateGroup({
8989
data: { ...group, users: group.users.concat([user]) },
9090
orgId: `${orgId}`,
91-
users: group.users.concat([user]),
91+
usersToAdd: [user.id],
9292
usersToAddAdmin: null,
9393
usersToRemove: null,
9494
usersToRemoveAdmin: null,
@@ -97,7 +97,7 @@ const UsersGroups: FC<UsersGroupsType> = ({ orgId, user }) => {
9797
updateGroup({
9898
data: group,
9999
orgId: `${orgId}`,
100-
users: group.users,
100+
usersToAdd: null,
101101
usersToAddAdmin: null,
102102
usersToRemove: [user.id],
103103
usersToRemoveAdmin: null,
@@ -115,9 +115,7 @@ const UsersGroups: FC<UsersGroupsType> = ({ orgId, user }) => {
115115
updateGroup({
116116
data: { ...group, users: group.users.concat([user]) },
117117
orgId: `${orgId}`,
118-
users: isInGroup
119-
? group.users
120-
: group.users.concat([user]),
118+
usersToAdd: isInGroup ? null : [user.id],
121119
usersToAddAdmin: [user.id],
122120
usersToRemove: null,
123121
usersToRemoveAdmin: null,
@@ -126,7 +124,7 @@ const UsersGroups: FC<UsersGroupsType> = ({ orgId, user }) => {
126124
updateGroup({
127125
data: group,
128126
orgId: `${orgId}`,
129-
users: group.users,
127+
usersToAdd: null,
130128
usersToAddAdmin: null,
131129
usersToRemove: null,
132130
usersToRemoveAdmin: [user.id],

frontend/web/components/modals/CreateGroup.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,9 @@ const CreateGroup: FC<CreateGroupType> = ({ group, orgId, roles }) => {
109109
const getUsersToRemove = (usersToFilter: GroupUser[]) =>
110110
filter(usersToFilter, ({ id }) => !find(users, { id }))
111111

112+
const getUsersToAdd = (existingUsers: GroupUser[]) =>
113+
filter(users, ({ id }) => !find(existingUsers, { id }))
114+
112115
const getUsersAdminChanged = (existingUsers: GroupUser[], value: boolean) => {
113116
return filter(users, (user) => {
114117
if (!!user.group_admin !== value) {
@@ -140,7 +143,7 @@ const CreateGroup: FC<CreateGroupType> = ({ group, orgId, roles }) => {
140143
updateGroup({
141144
data,
142145
orgId,
143-
users: users as any,
146+
usersToAdd: getUsersToAdd(groupData!.users).map((v) => v.id),
144147
usersToAddAdmin: (usersToAddAdmin || []).map((user) => user.id),
145148
usersToRemove: getUsersToRemove(groupData!.users).map((v) => v.id),
146149
usersToRemoveAdmin: (usersToRemoveAdmin || []).map((user) => user.id),

0 commit comments

Comments
 (0)