@@ -45,8 +45,24 @@ export const useGetAgentRoles = ({
45
45
} ,
46
46
} ) ;
47
47
48
+ const { data : subscriptionAgentRemovedData } =
49
+ useEventSubscriptionSubscription ( {
50
+ variables : {
51
+ qualifiedName : `${ getAsset ( ) } .AGENT-REMOVED` ,
52
+ } ,
53
+ } ) ;
54
+
55
+ const { data : subscriptionAgentAddedData } = useEventSubscriptionSubscription (
56
+ {
57
+ variables : {
58
+ qualifiedName : `${ getAsset ( ) } .AGENT-ADDED` ,
59
+ } ,
60
+ } ,
61
+ ) ;
62
+
48
63
const initInnerData = async ( agentArg : string ) => {
49
64
const data = await getAgentRoles ( { agent : agentArg } ) ;
65
+
50
66
setInnerData ( data ) ;
51
67
setIsMounted ( true ) ;
52
68
} ;
@@ -62,13 +78,25 @@ export const useGetAgentRoles = ({
62
78
} , [ agent ] ) ;
63
79
64
80
useEffect ( ( ) => {
65
- subscriptionData ?. events ?. map ( ( event ) => {
66
- const params = JSON . parse ( event . parameters ?? '[]' ) ;
67
- if ( params [ 0 ] === agent ) {
68
- setInnerData ( params [ 1 ] ) ;
69
- }
70
- } ) ;
71
- } , [ subscriptionData ] ) ;
81
+ const { events : rolesUpdatedEvents } = subscriptionData ?? { } ;
82
+ const { events : agentRemovedEvents } = subscriptionAgentRemovedData ?? { } ;
83
+ const { events : agentAddedEvents } = subscriptionAgentAddedData ?? { } ;
84
+
85
+ [ rolesUpdatedEvents , agentRemovedEvents , agentAddedEvents ]
86
+ . flat ( )
87
+ ?. find ( ( event ) => {
88
+ if ( ! event ) return ;
89
+ const params = JSON . parse ( event . parameters ?? '[]' ) ;
90
+ if ( params [ 0 ] === agent && ! ! agent ) {
91
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
92
+ initInnerData ( agent ! ) ;
93
+ }
94
+ } ) ;
95
+ } , [
96
+ subscriptionData ,
97
+ subscriptionAgentRemovedData ,
98
+ subscriptionAgentAddedData ,
99
+ ] ) ;
72
100
73
101
const getAll = useCallback ( ( ) => {
74
102
return innerData ;
0 commit comments