File tree 1 file changed +12
-4
lines changed
packages/app-backend-core/src/util 1 file changed +12
-4
lines changed Original file line number Diff line number Diff line change @@ -15,22 +15,30 @@ function getSubs (type: string) {
15
15
}
16
16
17
17
export function subscribe ( type : string , payload : any ) {
18
- const rawPayload = JSON . stringify ( payload )
18
+ const rawPayload = getRawPayload ( payload )
19
19
getSubs ( type ) . push ( {
20
20
payload,
21
21
rawPayload,
22
22
} )
23
23
}
24
24
25
25
export function unsubscribe ( type : string , payload : any ) {
26
- const rawPayload = JSON . stringify ( payload )
26
+ const rawPayload = getRawPayload ( payload )
27
27
const subs = getSubs ( type )
28
- const index = subs . findIndex ( sub => sub . rawPayload === rawPayload )
29
- if ( index !== - 1 ) {
28
+ let index : number
29
+ while ( ( index = subs . findIndex ( sub => sub . rawPayload === rawPayload ) ) !== - 1 ) {
30
30
subs . splice ( index , 1 )
31
31
}
32
32
}
33
33
34
+ function getRawPayload ( payload : any ) {
35
+ const data = Object . keys ( payload ) . sort ( ) . reduce ( ( acc , key ) => {
36
+ acc [ key ] = payload [ key ]
37
+ return acc
38
+ } , { } )
39
+ return JSON . stringify ( data )
40
+ }
41
+
34
42
export function isSubscribed (
35
43
type : string ,
36
44
predicate : ( sub : Subscription ) => boolean = ( ) => true ,
You can’t perform that action at this time.
0 commit comments