Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit05f1814

Browse files
authored
fix: use insert and delete instead of upsert for custom roles (#14252)
* fix: use insert and update instead of upsert* fix: cleanup
1 parentc567a9d commit05f1814

File tree

4 files changed

+63
-15
lines changed

4 files changed

+63
-15
lines changed

‎site/src/api/api.ts

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -603,11 +603,26 @@ class ApiMethods {
603603
/**
604604
*@param organization Can be the organization's ID or name
605605
*/
606-
patchOrganizationRole=async(
606+
createOrganizationRole=async(
607607
organization:string,
608608
role:TypesGen.Role,
609609
):Promise<TypesGen.Role>=>{
610-
constresponse=awaitthis.axios.patch<TypesGen.Role>(
610+
constresponse=awaitthis.axios.post<TypesGen.Role>(
611+
`/api/v2/organizations/${organization}/members/roles`,
612+
role,
613+
);
614+
615+
returnresponse.data;
616+
};
617+
618+
/**
619+
*@param organization Can be the organization's ID or name
620+
*/
621+
updateOrganizationRole=async(
622+
organization:string,
623+
role:TypesGen.Role,
624+
):Promise<TypesGen.Role>=>{
625+
constresponse=awaitthis.axios.put<TypesGen.Role>(
611626
`/api/v2/organizations/${organization}/members/roles`,
612627
role,
613628
);

‎site/src/api/queries/roles.ts

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,27 @@ export const organizationRoles = (organization: string) => {
2323
};
2424
};
2525

26-
exportconstpatchOrganizationRole=(
26+
exportconstcreateOrganizationRole=(
2727
queryClient:QueryClient,
2828
organization:string,
2929
)=>{
3030
return{
3131
mutationFn:(request:Role)=>
32-
API.patchOrganizationRole(organization,request),
32+
API.createOrganizationRole(organization,request),
33+
onSuccess:async(updatedRole:Role)=>
34+
awaitqueryClient.invalidateQueries(
35+
getRoleQueryKey(organization,updatedRole.name),
36+
),
37+
};
38+
};
39+
40+
exportconstupdateOrganizationRole=(
41+
queryClient:QueryClient,
42+
organization:string,
43+
)=>{
44+
return{
45+
mutationFn:(request:Role)=>
46+
API.updateOrganizationRole(organization,request),
3347
onSuccess:async(updatedRole:Role)=>
3448
awaitqueryClient.invalidateQueries(
3549
getRoleQueryKey(organization,updatedRole.name),

‎site/src/pages/ManagementSettingsPage/CustomRolesPage/CreateEditRolePage.tsx

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,12 @@ import { useMutation, useQuery, useQueryClient } from "react-query";
44
import{useNavigate,useParams}from"react-router-dom";
55
import{getErrorMessage}from"api/errors";
66
import{organizationPermissions}from"api/queries/organizations";
7-
import{patchOrganizationRole,organizationRoles}from"api/queries/roles";
8-
importtype{PatchRoleRequest}from"api/typesGenerated";
7+
import{
8+
organizationRoles,
9+
createOrganizationRole,
10+
updateOrganizationRole,
11+
}from"api/queries/roles";
12+
importtype{CustomRoleRequest}from"api/typesGenerated";
913
import{displayError}from"components/GlobalSnackbar/utils";
1014
import{Loader}from"components/Loader/Loader";
1115
import{pageTitle}from"utils/page";
@@ -22,8 +26,11 @@ export const CreateEditRolePage: FC = () => {
2226
const{ organizations}=useOrganizationSettings();
2327
constorganization=organizations?.find((o)=>o.name===organizationName);
2428
constpermissionsQuery=useQuery(organizationPermissions(organization?.id));
25-
constpatchOrganizationRoleMutation=useMutation(
26-
patchOrganizationRole(queryClient,organizationName),
29+
constcreateOrganizationRoleMutation=useMutation(
30+
createOrganizationRole(queryClient,organizationName),
31+
);
32+
constupdateOrganizationRoleMutation=useMutation(
33+
updateOrganizationRole(queryClient,organizationName),
2734
);
2835
const{data:roleData, isLoading}=useQuery(
2936
organizationRoles(organizationName),
@@ -47,18 +54,30 @@ export const CreateEditRolePage: FC = () => {
4754

4855
<CreateEditRolePageView
4956
role={role}
50-
onSubmit={async(data:PatchRoleRequest)=>{
57+
onSubmit={async(data:CustomRoleRequest)=>{
5158
try{
52-
awaitpatchOrganizationRoleMutation.mutateAsync(data);
59+
if(role){
60+
awaitupdateOrganizationRoleMutation.mutateAsync(data);
61+
}else{
62+
awaitcreateOrganizationRoleMutation.mutateAsync(data);
63+
}
5364
navigate(`/organizations/${organizationName}/roles`);
5465
}catch(error){
5566
displayError(
5667
getErrorMessage(error,"Failed to update custom role"),
5768
);
5869
}
5970
}}
60-
error={patchOrganizationRoleMutation.error}
61-
isLoading={patchOrganizationRoleMutation.isLoading}
71+
error={
72+
role
73+
?updateOrganizationRoleMutation.error
74+
:createOrganizationRoleMutation.error
75+
}
76+
isLoading={
77+
role
78+
?updateOrganizationRoleMutation.isLoading
79+
:createOrganizationRoleMutation.isLoading
80+
}
6281
organizationName={organizationName}
6382
canAssignOrgRole={permissions.assignOrgRole}
6483
/>

‎site/src/pages/ManagementSettingsPage/CustomRolesPage/CreateEditRolePageView.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import { isApiValidationError } from "api/errors";
2020
import{RBACResourceActions}from"api/rbacresources_gen";
2121
importtype{
2222
Role,
23-
PatchRoleRequest,
23+
CustomRoleRequest,
2424
Permission,
2525
AssignableRoles,
2626
RBACResource,
@@ -38,7 +38,7 @@ const validationSchema = Yup.object({
3838

3939
exporttypeCreateEditRolePageViewProps={
4040
role:AssignableRoles|undefined;
41-
onSubmit:(data:PatchRoleRequest)=>void;
41+
onSubmit:(data:CustomRoleRequest)=>void;
4242
error?:unknown;
4343
isLoading:boolean;
4444
organizationName:string;
@@ -58,7 +58,7 @@ export const CreateEditRolePageView: FC<CreateEditRolePageViewProps> = ({
5858
constnavigate=useNavigate();
5959
constonCancel=()=>navigate(-1);
6060

61-
constform=useFormik<PatchRoleRequest>({
61+
constform=useFormik<CustomRoleRequest>({
6262
initialValues:{
6363
name:role?.name||"",
6464
display_name:role?.display_name||"",

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp