@@ -44,6 +44,9 @@ import {
44
44
BoostHubTeamUpdateEvent ,
45
45
listenBoostHubTeamUpdateEvent ,
46
46
unlistenBoostHubTeamUpdateEvent ,
47
+ BoostHubTeamDeleteEvent ,
48
+ listenBoostHubTeamDeleteEvent ,
49
+ unlistenBoostHubTeamDeleteEvent ,
47
50
} from '../lib/events'
48
51
import {
49
52
useCheckedFeatures ,
@@ -219,24 +222,27 @@ const App = () => {
219
222
220
223
useEffect ( ( ) => {
221
224
const boostHubTeamCreateEventHandler = ( event : BoostHubTeamCreateEvent ) => {
222
- const team = event . detail . team
225
+ const createdTeam = event . detail . team
223
226
setGeneralStatus ( ( previousGeneralStatus ) => {
227
+ const teamMap =
228
+ previousGeneralStatus . boostHubTeams ! . reduce ( ( map , team ) => {
229
+ map . set ( team . id , team )
230
+ return map
231
+ } , new Map ( ) ) || new Map ( )
232
+ teamMap . set ( createdTeam . id , {
233
+ id : createdTeam . id ,
234
+ name : createdTeam . name ,
235
+ domain : createdTeam . domain ,
236
+ iconUrl :
237
+ createdTeam . icon != null
238
+ ? getBoostHubTeamIconUrl ( createdTeam . icon . location )
239
+ : undefined ,
240
+ } )
224
241
return {
225
- boostHubTeams : [
226
- ...previousGeneralStatus . boostHubTeams ! ,
227
- {
228
- id : team . id ,
229
- name : team . name ,
230
- domain : team . domain ,
231
- iconUrl :
232
- team . icon != null
233
- ? getBoostHubTeamIconUrl ( team . icon . location )
234
- : undefined ,
235
- } ,
236
- ] ,
242
+ boostHubTeams : [ ...teamMap . values ( ) ] ,
237
243
}
238
244
} )
239
- push ( `/app/boosthub/teams/${ team . domain } ` )
245
+ push ( `/app/boosthub/teams/${ createdTeam . domain } ` )
240
246
}
241
247
242
248
const boostHubTeamUpdateEventHandler = ( event : BoostHubTeamUpdateEvent ) => {
@@ -262,11 +268,29 @@ const App = () => {
262
268
} )
263
269
}
264
270
271
+ const boostHubTeamDeleteEventHandler = ( event : BoostHubTeamDeleteEvent ) => {
272
+ const deletedTeam = event . detail . team
273
+ setGeneralStatus ( ( previousGeneralStatus ) => {
274
+ const teamMap =
275
+ previousGeneralStatus . boostHubTeams ! . reduce ( ( map , team ) => {
276
+ map . set ( team . id , team )
277
+ return map
278
+ } , new Map ( ) ) || new Map ( )
279
+ teamMap . delete ( deletedTeam . id )
280
+ return {
281
+ boostHubTeams : [ ...teamMap . values ( ) ] ,
282
+ }
283
+ } )
284
+ push ( `/app` )
285
+ }
286
+
265
287
listenBoostHubTeamCreateEvent ( boostHubTeamCreateEventHandler )
266
288
listenBoostHubTeamUpdateEvent ( boostHubTeamUpdateEventHandler )
289
+ listenBoostHubTeamDeleteEvent ( boostHubTeamDeleteEventHandler )
267
290
return ( ) => {
268
291
unlistenBoostHubTeamCreateEvent ( boostHubTeamCreateEventHandler )
269
292
unlistenBoostHubTeamUpdateEvent ( boostHubTeamUpdateEventHandler )
293
+ unlistenBoostHubTeamDeleteEvent ( boostHubTeamDeleteEventHandler )
270
294
}
271
295
} , [ push , setGeneralStatus ] )
272
296
0 commit comments