@@ -25,16 +25,20 @@ import { TableLoader } from "components/TableLoader/TableLoader";
25
25
import { createDayString } from "utils/createDayString" ;
26
26
import { OAuth2AppForm } from "./OAuth2AppForm" ;
27
27
28
+ export type MutatingResource = {
29
+ updateApp : boolean ;
30
+ createSecret : boolean ;
31
+ deleteApp : boolean ;
32
+ deleteSecret : boolean ;
33
+ } ;
34
+
28
35
type EditOAuth2AppProps = {
29
36
app ?: TypesGen . OAuth2App ;
30
37
isLoadingApp : boolean ;
31
38
isLoadingSecrets : boolean ;
32
- isUpdating :
33
- | "update-app"
34
- | "create-secret"
35
- | "delete-app"
36
- | "delete-secret"
37
- | false ;
39
+ // mutatingResource indicates which resources, if any, are currently being
40
+ // mutated.
41
+ mutatingResource : MutatingResource ;
38
42
updateApp : ( req : TypesGen . PutOAuth2AppRequest ) => void ;
39
43
deleteApp : ( ) => void ;
40
44
generateAppSecret : ( ) => void ;
@@ -49,7 +53,7 @@ export const EditOAuth2AppPageView: FC<EditOAuth2AppProps> = ({
49
53
app,
50
54
isLoadingApp,
51
55
isLoadingSecrets,
52
- isUpdating ,
56
+ mutatingResource ,
53
57
updateApp,
54
58
deleteApp,
55
59
generateAppSecret,
@@ -127,7 +131,7 @@ export const EditOAuth2AppPageView: FC<EditOAuth2AppProps> = ({
127
131
< >
128
132
< DeleteDialog
129
133
isOpen = { showDelete }
130
- confirmLoading = { isUpdating === "delete-app" }
134
+ confirmLoading = { mutatingResource . deleteApp }
131
135
name = { app . name }
132
136
entity = "OAuth2 application"
133
137
onConfirm = { deleteApp }
@@ -146,7 +150,7 @@ export const EditOAuth2AppPageView: FC<EditOAuth2AppProps> = ({
146
150
< OAuth2AppForm
147
151
app = { app }
148
152
onSubmit = { updateApp }
149
- isUpdating = { isUpdating === "update-app" }
153
+ isUpdating = { mutatingResource . updateApp }
150
154
error = { error }
151
155
actions = {
152
156
< Button
@@ -167,7 +171,7 @@ export const EditOAuth2AppPageView: FC<EditOAuth2AppProps> = ({
167
171
generateAppSecret = { generateAppSecret }
168
172
deleteAppSecret = { deleteAppSecret }
169
173
isLoadingSecrets = { isLoadingSecrets }
170
- isUpdating = { isUpdating }
174
+ mutatingResource = { mutatingResource }
171
175
/>
172
176
</ >
173
177
) }
@@ -180,20 +184,15 @@ type OAuth2AppSecretsTableProps = {
180
184
secrets ?: readonly TypesGen . OAuth2AppSecret [ ] ;
181
185
generateAppSecret : ( ) => void ;
182
186
isLoadingSecrets : boolean ;
183
- isUpdating :
184
- | "update-app"
185
- | "create-secret"
186
- | "delete-app"
187
- | "delete-secret"
188
- | false ;
187
+ mutatingResource : MutatingResource ;
189
188
deleteAppSecret : ( id : string ) => void ;
190
189
} ;
191
190
192
191
const OAuth2AppSecretsTable : FC < OAuth2AppSecretsTableProps > = ( {
193
192
secrets,
194
193
generateAppSecret,
195
194
isLoadingSecrets,
196
- isUpdating ,
195
+ mutatingResource ,
197
196
deleteAppSecret,
198
197
} ) => {
199
198
return (
@@ -205,7 +204,7 @@ const OAuth2AppSecretsTable: FC<OAuth2AppSecretsTableProps> = ({
205
204
>
206
205
< h2 > Client secrets</ h2 >
207
206
< LoadingButton
208
- loading = { isUpdating === "create-secret" }
207
+ loading = { mutatingResource . createSecret }
209
208
type = "submit"
210
209
variant = "contained"
211
210
onClick = { generateAppSecret }
@@ -239,7 +238,7 @@ const OAuth2AppSecretsTable: FC<OAuth2AppSecretsTableProps> = ({
239
238
< OAuth2SecretRow
240
239
key = { secret . id }
241
240
secret = { secret }
242
- isUpdating = { isUpdating }
241
+ mutatingResource = { mutatingResource }
243
242
deleteAppSecret = { deleteAppSecret }
244
243
/>
245
244
) ) }
@@ -253,18 +252,13 @@ const OAuth2AppSecretsTable: FC<OAuth2AppSecretsTableProps> = ({
253
252
type OAuth2SecretRowProps = {
254
253
secret : TypesGen . OAuth2AppSecret ;
255
254
deleteAppSecret : ( id : string ) => void ;
256
- isUpdating :
257
- | "update-app"
258
- | "create-secret"
259
- | "delete-app"
260
- | "delete-secret"
261
- | false ;
255
+ mutatingResource : MutatingResource ;
262
256
} ;
263
257
264
258
const OAuth2SecretRow : FC < OAuth2SecretRowProps > = ( {
265
259
secret,
266
260
deleteAppSecret,
267
- isUpdating ,
261
+ mutatingResource ,
268
262
} ) => {
269
263
const [ showDelete , setShowDelete ] = useState < boolean > ( false ) ;
270
264
@@ -282,7 +276,7 @@ const OAuth2SecretRow: FC<OAuth2SecretRowProps> = ({
282
276
onConfirm = { ( ) => deleteAppSecret ( secret . id ) }
283
277
onClose = { ( ) => setShowDelete ( false ) }
284
278
title = "Delete OAuth2 client secret"
285
- confirmLoading = { isUpdating === "delete-secret" }
279
+ confirmLoading = { mutatingResource . deleteSecret }
286
280
confirmText = "Delete"
287
281
description = {
288
282
< >
0 commit comments