Skip to content

Commit 5796484

Browse files
authored
Merge pull request #1211 from scottsut/mode
fix(Member): unify request error handle
2 parents 7e10b7e + 253b356 commit 5796484

File tree

1 file changed

+78
-134
lines changed
  • frontend/src/app/pages/MainPage/pages/MemberPage/slice

1 file changed

+78
-134
lines changed

frontend/src/app/pages/MainPage/pages/MemberPage/slice/thunks.ts

Lines changed: 78 additions & 134 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,7 @@ import { createAsyncThunk } from '@reduxjs/toolkit';
2020
import { User } from 'app/slice/types';
2121
import omit from 'lodash/omit';
2222
import { RootState } from 'types';
23-
import { request, request2 } from 'utils/request';
24-
import { errorHandle } from 'utils/utils';
23+
import { request2 } from 'utils/request';
2524
import { selectEditingMember, selectEditingRole } from './selectors';
2625
import {
2726
AddRoleParams,
@@ -37,48 +36,33 @@ import {
3736
export const getMembers = createAsyncThunk<User[], string>(
3837
'member/getMembers',
3938
async orgId => {
40-
try {
41-
const result = await request<User[]>(`/orgs/${orgId}/members`);
42-
return result.data;
43-
} catch (error) {
44-
errorHandle(error);
45-
throw error;
46-
}
39+
const result = await request2<User[]>(`/orgs/${orgId}/members`);
40+
return result.data;
4741
},
4842
);
4943

5044
export const inviteMember = createAsyncThunk<null, InviteMemberParams>(
5145
'member/inviteMember',
5246
async ({ params: { orgId, emails, sendMail }, resolve }) => {
53-
try {
54-
const { data } = await request<{ success: string[]; fail: string[] }>({
55-
url: `/orgs/${orgId}/invite`,
56-
method: 'POST',
57-
data: emails,
58-
params: { sendMail },
59-
});
60-
resolve(data);
61-
return null;
62-
} catch (error) {
63-
errorHandle(error);
64-
throw error;
65-
}
47+
const { data } = await request2<{ success: string[]; fail: string[] }>({
48+
url: `/orgs/${orgId}/invite`,
49+
method: 'POST',
50+
data: emails,
51+
params: { sendMail },
52+
});
53+
resolve(data);
54+
return null;
6655
},
6756
);
6857

6958
export const getMemberRoles = createAsyncThunk<
7059
Role[],
7160
{ orgId: string; memberId: string }
7261
>('member/getMemberRoles', async ({ orgId, memberId }) => {
73-
try {
74-
const { data } = await request<Role[]>({
75-
url: `/orgs/${orgId}/members/${memberId}/roles`,
76-
});
77-
return data;
78-
} catch (error) {
79-
errorHandle(error);
80-
throw error;
81-
}
62+
const { data } = await request2<Role[]>({
63+
url: `/orgs/${orgId}/members/${memberId}/roles`,
64+
});
65+
return data;
8266
});
8367

8468
export const saveMember = createAsyncThunk<
@@ -132,17 +116,12 @@ export const saveMember = createAsyncThunk<
132116
export const removeMember = createAsyncThunk<null, RemoveMemberParams>(
133117
'member/removeMember',
134118
async ({ id, orgId, resolve }) => {
135-
try {
136-
await request<boolean>({
137-
url: `/orgs/${orgId}/members/${id}`,
138-
method: 'DELETE',
139-
});
140-
resolve();
141-
return null;
142-
} catch (error) {
143-
errorHandle(error);
144-
throw error;
145-
}
119+
await request2<boolean>({
120+
url: `/orgs/${orgId}/members/${id}`,
121+
method: 'DELETE',
122+
});
123+
resolve();
124+
return null;
146125
},
147126
);
148127

@@ -162,31 +141,21 @@ export const deleteMember = createAsyncThunk<null, RemoveMemberParams>(
162141
export const getRoles = createAsyncThunk<Role[], string>(
163142
'member/getRoles',
164143
async orgId => {
165-
try {
166-
const { data } = await request<Role[]>(`/orgs/${orgId}/roles`);
167-
return data;
168-
} catch (error) {
169-
errorHandle(error);
170-
throw error;
171-
}
144+
const { data } = await request2<Role[]>(`/orgs/${orgId}/roles`);
145+
return data;
172146
},
173147
);
174148

175149
export const addRole = createAsyncThunk<Role, AddRoleParams>(
176150
'member/addRole',
177151
async ({ role, resolve }) => {
178-
try {
179-
const { data } = await request<Role>({
180-
url: '/roles',
181-
method: 'POST',
182-
data: role,
183-
});
184-
resolve();
185-
return data;
186-
} catch (error) {
187-
errorHandle(error);
188-
throw error;
189-
}
152+
const { data } = await request2<Role>({
153+
url: '/roles',
154+
method: 'POST',
155+
data: role,
156+
});
157+
resolve();
158+
return data;
190159
},
191160
);
192161

@@ -195,103 +164,78 @@ export const editRole = createAsyncThunk<
195164
EditRoleParams,
196165
{ state: RootState }
197166
>('member/editRole', async ({ role, members, resolve }, { getState }) => {
198-
try {
199-
const editingRole = selectEditingRole(getState());
200-
if (editingRole) {
201-
const { info, members: originMembers } = editingRole;
202-
const mergedRole = { ...info, ...role };
203-
const originMemberIds = originMembers.map(({ id }) => id);
204-
const memberIds = members.map(({ id }) => id);
167+
const editingRole = selectEditingRole(getState());
168+
if (editingRole) {
169+
const { info, members: originMembers } = editingRole;
170+
const mergedRole = { ...info, ...role };
171+
const originMemberIds = originMembers.map(({ id }) => id);
172+
const memberIds = members.map(({ id }) => id);
173+
174+
await Promise.all([
175+
request2<boolean>({
176+
url: `/roles/${info.id}`,
177+
method: 'PUT',
178+
data: omit(mergedRole, 'orgId'),
179+
}),
180+
originMemberIds.sort().join() !== memberIds.sort().join()
181+
? request2<boolean>({
182+
url: `/roles/${info.id}/users`,
183+
method: 'PUT',
184+
data: memberIds,
185+
})
186+
: null,
187+
]);
205188

206-
await Promise.all([
207-
request<boolean>({
208-
url: `/roles/${info.id}`,
209-
method: 'PUT',
210-
data: omit(mergedRole, 'orgId'),
211-
}),
212-
originMemberIds.sort().join() !== memberIds.sort().join()
213-
? request<boolean>({
214-
url: `/roles/${info.id}/users`,
215-
method: 'PUT',
216-
data: memberIds,
217-
})
218-
: null,
219-
]);
220-
221-
resolve();
222-
return mergedRole;
223-
}
224-
return null;
225-
} catch (error) {
226-
errorHandle(error);
227-
throw error;
189+
resolve();
190+
return mergedRole;
228191
}
192+
return null;
229193
});
230194

231195
export const deleteRole = createAsyncThunk<null, DeleteRoleParams>(
232196
'member/deleteRole',
233197
async ({ id, resolve }) => {
234-
try {
235-
await request<boolean>({
236-
url: `/roles/${id}`,
237-
method: 'DELETE',
238-
});
239-
resolve();
240-
return null;
241-
} catch (error) {
242-
errorHandle(error);
243-
throw error;
244-
}
198+
await request2<boolean>({
199+
url: `/roles/${id}`,
200+
method: 'DELETE',
201+
});
202+
resolve();
203+
return null;
245204
},
246205
);
247206

248207
export const getRoleMembers = createAsyncThunk<User[], string>(
249208
'member/getRoleMembers',
250209
async roleId => {
251-
try {
252-
const { data } = await request<User[]>({
253-
url: `/roles/${roleId}/users`,
254-
});
255-
return data;
256-
} catch (error) {
257-
errorHandle(error);
258-
throw error;
259-
}
210+
const { data } = await request2<User[]>({
211+
url: `/roles/${roleId}/users`,
212+
});
213+
return data;
260214
},
261215
);
262216

263217
export const grantOwner = createAsyncThunk<null, GrantOwnerParams>(
264218
'member/grantOwner',
265219
async ({ orgId, userId, resolve }) => {
266-
try {
267-
await request<boolean>({
268-
url: '/roles/permission/grant/org_owner',
269-
method: 'POST',
270-
params: { orgId, userId },
271-
});
272-
resolve();
273-
return null;
274-
} catch (error) {
275-
errorHandle(error);
276-
throw error;
277-
}
220+
await request2<boolean>({
221+
url: '/roles/permission/grant/org_owner',
222+
method: 'POST',
223+
params: { orgId, userId },
224+
});
225+
resolve();
226+
return null;
278227
},
279228
);
280229

281230
export const revokeOwner = createAsyncThunk<null, GrantOwnerParams>(
282231
'member/revokeOwner',
283232
async ({ orgId, userId, resolve }) => {
284-
try {
285-
await request<boolean>({
286-
url: '/roles/permission/revoke/org_owner',
287-
method: 'DELETE',
288-
params: { orgId, userId },
289-
});
290-
resolve();
291-
return null;
292-
} catch (error) {
293-
errorHandle(error);
294-
throw error;
295-
}
233+
await request2<boolean>({
234+
url: '/roles/permission/revoke/org_owner',
235+
method: 'DELETE',
236+
params: { orgId, userId },
237+
});
238+
resolve();
239+
return null;
296240
},
297241
);

0 commit comments

Comments
 (0)