@@ -21,6 +21,7 @@ export default function TeamSettings() {
21
21
const [ modal , setModal ] = useState ( false ) ;
22
22
const [ teamNameToDelete , setTeamNameToDelete ] = useState ( "" ) ;
23
23
const [ teamName , setTeamName ] = useState ( org ?. name || "" ) ;
24
+ const [ slug , setSlug ] = useState ( org ?. slug || "" ) ;
24
25
const [ errorMessage , setErrorMessage ] = useState < string | undefined > ( undefined ) ;
25
26
const [ updated , setUpdated ] = useState ( false ) ;
26
27
@@ -31,14 +32,14 @@ export default function TeamSettings() {
31
32
return ;
32
33
}
33
34
try {
34
- await getGitpodService ( ) . server . updateTeam ( org . id , { name : teamName } ) ;
35
+ await getGitpodService ( ) . server . updateTeam ( org . id , { name : teamName , slug } ) ;
35
36
invalidateOrgs ( ) ;
36
37
setUpdated ( true ) ;
37
38
setTimeout ( ( ) => setUpdated ( false ) , 3000 ) ;
38
39
} catch ( error ) {
39
40
setErrorMessage ( `Failed to update organization information: ${ error . message } ` ) ;
40
41
}
41
- } , [ org , errorMessage , teamName , invalidateOrgs ] ) ;
42
+ } , [ org , errorMessage , slug , teamName , invalidateOrgs ] ) ;
42
43
43
44
const onNameChange = useCallback (
44
45
async ( event : React . ChangeEvent < HTMLInputElement > ) => {
@@ -60,6 +61,26 @@ export default function TeamSettings() {
60
61
[ org ] ,
61
62
) ;
62
63
64
+ const onSlugChange = useCallback (
65
+ async ( event : React . ChangeEvent < HTMLInputElement > ) => {
66
+ if ( ! org ) {
67
+ return ;
68
+ }
69
+ const newSlug = event . target . value || "" ;
70
+ setSlug ( newSlug ) ;
71
+ if ( newSlug . trim ( ) . length === 0 ) {
72
+ setErrorMessage ( "Organization slug can not be blank." ) ;
73
+ return ;
74
+ } else if ( newSlug . trim ( ) . length > 100 ) {
75
+ setErrorMessage ( "Organization slug must not be longer than 100 characters." ) ;
76
+ return ;
77
+ } else {
78
+ setErrorMessage ( undefined ) ;
79
+ }
80
+ } ,
81
+ [ org ] ,
82
+ ) ;
83
+
63
84
const deleteTeam = useCallback ( async ( ) => {
64
85
if ( ! org || ! user ) {
65
86
return ;
@@ -95,10 +116,18 @@ export default function TeamSettings() {
95
116
</ div >
96
117
</ div >
97
118
</ div >
119
+ < div className = "flex flex-col lg:flex-row" >
120
+ < div >
121
+ < div className = "mt-4 mb-3" >
122
+ < h4 > Slug</ h4 >
123
+ < input type = "text" value = { slug } onChange = { onSlugChange } />
124
+ </ div >
125
+ </ div >
126
+ </ div >
98
127
< div className = "flex flex-row" >
99
128
< button
100
129
className = "primary"
101
- disabled = { org ?. name === teamName || ! ! errorMessage }
130
+ disabled = { ( org ?. name === teamName && org ?. slug === slug ) || ! ! errorMessage }
102
131
onClick = { updateTeamInformation }
103
132
>
104
133
Update Organization Name
0 commit comments