@@ -2,7 +2,11 @@ import { Subject } from 'rxjs';
2
2
import type { Socket } from 'socket.io-client' ;
3
3
4
4
import { ErrorCallback } from '../common/types/callbacks.types' ;
5
- import { InternalPresenceEvents , PresenceEvents } from '../common/types/event.types' ;
5
+ import {
6
+ InternalPresenceEvents ,
7
+ PresenceEvents ,
8
+ PresenceEventsArg ,
9
+ } from '../common/types/event.types' ;
6
10
import type { Presence } from '../common/types/presence.types' ;
7
11
8
12
import { PresenceCallback , PresenceEvent , PresenceEventFromServer } from './types' ;
@@ -11,12 +15,12 @@ import { Logger } from '../../../common/utils';
11
15
export class PresenceRoom {
12
16
private logger : Logger ;
13
17
private presences : Set < PresenceEvent > = new Set ( ) ;
14
- private observers : Map < PresenceEvents , Subject < PresenceEvent > > = new Map ( ) ;
18
+ private observers : Map < PresenceEventsArg , Subject < PresenceEvent > > = new Map ( ) ;
15
19
16
20
constructor ( private io : Socket , private presence : Presence , private roomId : string ) {
17
21
this . logger = new Logger ( '@superviz/sdk/socket-client/presence' ) ;
18
22
19
- this . registerSubsjects ( ) ;
23
+ this . registerSubjects ( ) ;
20
24
this . subscribeToPresenceEvents ( ) ;
21
25
}
22
26
@@ -90,11 +94,11 @@ export class PresenceRoom {
90
94
}
91
95
92
96
/**
93
- * @function registerSubsjects
97
+ * @function registerSubjects
94
98
* @description Register the subjects for the presence events
95
99
* @returns {void }
96
100
*/
97
- private registerSubsjects ( ) : void {
101
+ private registerSubjects ( ) : void {
98
102
this . observers . set ( PresenceEvents . JOINED_ROOM , new Subject ( ) ) ;
99
103
this . observers . set ( PresenceEvents . LEAVE , new Subject ( ) ) ;
100
104
this . observers . set ( PresenceEvents . UPDATE , new Subject ( ) ) ;
@@ -108,7 +112,7 @@ export class PresenceRoom {
108
112
* @returns {void }
109
113
*/
110
114
public on < T extends unknown > (
111
- event : PresenceEvents ,
115
+ event : PresenceEventsArg ,
112
116
callback : PresenceCallback < T > ,
113
117
error ?: ErrorCallback ,
114
118
) : void {
@@ -125,8 +129,10 @@ export class PresenceRoom {
125
129
* @param callback - The callback to remove from the event
126
130
* @returns {void }
127
131
*/
128
- public off ( event : PresenceEvents ) : void {
132
+ public off ( event : PresenceEventsArg ) : void {
129
133
this . observers . get ( event ) . unsubscribe ( ) ;
134
+ this . observers . delete ( event ) ;
135
+ this . observers . set ( event , new Subject ( ) ) ;
130
136
}
131
137
132
138
/**
0 commit comments