@@ -58,6 +58,7 @@ export default function TeamSettings() {
58
58
const [ modal , setModal ] = useState ( false ) ;
59
59
const [ teamNameToDelete , setTeamNameToDelete ] = useState ( "" ) ;
60
60
const [ teamName , setTeamName ] = useState ( org ?. name || "" ) ;
61
+ const [ slug , setSlug ] = useState ( org ?. slug || "" ) ;
61
62
const [ errorMessage , setErrorMessage ] = useState < string | undefined > ( undefined ) ;
62
63
const [ updated , setUpdated ] = useState ( false ) ;
63
64
@@ -68,14 +69,14 @@ export default function TeamSettings() {
68
69
return ;
69
70
}
70
71
try {
71
- await getGitpodService ( ) . server . updateTeam ( org . id , { name : teamName } ) ;
72
+ await getGitpodService ( ) . server . updateTeam ( org . id , { name : teamName , slug } ) ;
72
73
invalidateOrgs ( ) ;
73
74
setUpdated ( true ) ;
74
75
setTimeout ( ( ) => setUpdated ( false ) , 3000 ) ;
75
76
} catch ( error ) {
76
77
setErrorMessage ( `Failed to update organization information: ${ error . message } ` ) ;
77
78
}
78
- } , [ org , errorMessage , teamName , invalidateOrgs ] ) ;
79
+ } , [ org , errorMessage , slug , teamName , invalidateOrgs ] ) ;
79
80
80
81
const onNameChange = useCallback (
81
82
async ( event : React . ChangeEvent < HTMLInputElement > ) => {
@@ -97,6 +98,26 @@ export default function TeamSettings() {
97
98
[ org ] ,
98
99
) ;
99
100
101
+ const onSlugChange = useCallback (
102
+ async ( event : React . ChangeEvent < HTMLInputElement > ) => {
103
+ if ( ! org ) {
104
+ return ;
105
+ }
106
+ const newSlug = event . target . value || "" ;
107
+ setSlug ( newSlug ) ;
108
+ if ( newSlug . trim ( ) . length === 0 ) {
109
+ setErrorMessage ( "Organization slug can not be blank." ) ;
110
+ return ;
111
+ } else if ( newSlug . trim ( ) . length > 100 ) {
112
+ setErrorMessage ( "Organization slug must not be longer than 100 characters." ) ;
113
+ return ;
114
+ } else {
115
+ setErrorMessage ( undefined ) ;
116
+ }
117
+ } ,
118
+ [ org ] ,
119
+ ) ;
120
+
100
121
const deleteTeam = useCallback ( async ( ) => {
101
122
if ( ! org || ! user ) {
102
123
return ;
@@ -132,10 +153,18 @@ export default function TeamSettings() {
132
153
</ div >
133
154
</ div >
134
155
</ div >
156
+ < div className = "flex flex-col lg:flex-row" >
157
+ < div >
158
+ < div className = "mt-4 mb-3" >
159
+ < h4 > Slug</ h4 >
160
+ < input type = "text" value = { slug } onChange = { onSlugChange } />
161
+ </ div >
162
+ </ div >
163
+ </ div >
135
164
< div className = "flex flex-row" >
136
165
< button
137
166
className = "primary"
138
- disabled = { org ?. name === teamName || ! ! errorMessage }
167
+ disabled = { ( org ?. name === teamName && org ?. slug === slug ) || ! ! errorMessage }
139
168
onClick = { updateTeamInformation }
140
169
>
141
170
Update Organization Name
0 commit comments