livekit-client 1.1.9 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/livekit-client.esm.mjs +168 -57
- package/dist/livekit-client.esm.mjs.map +1 -1
- package/dist/livekit-client.umd.js +1 -1
- package/dist/livekit-client.umd.js.map +1 -1
- package/dist/src/api/SignalClient.d.ts +3 -1
- package/dist/src/api/SignalClient.d.ts.map +1 -1
- package/dist/src/options.d.ts +1 -0
- package/dist/src/options.d.ts.map +1 -1
- package/dist/src/room/RTCEngine.d.ts +1 -0
- package/dist/src/room/RTCEngine.d.ts.map +1 -1
- package/dist/src/room/Room.d.ts +1 -1
- package/dist/src/room/Room.d.ts.map +1 -1
- package/dist/src/room/events.d.ts +8 -1
- package/dist/src/room/events.d.ts.map +1 -1
- package/dist/src/room/participant/LocalParticipant.d.ts.map +1 -1
- package/dist/src/room/participant/RemoteParticipant.d.ts.map +1 -1
- package/dist/src/room/track/LocalTrack.d.ts.map +1 -1
- package/dist/src/room/track/RemoteTrackPublication.d.ts +4 -1
- package/dist/src/room/track/RemoteTrackPublication.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/api/SignalClient.ts +3 -1
- package/src/options.ts +1 -0
- package/src/room/RTCEngine.ts +41 -16
- package/src/room/Room.ts +20 -16
- package/src/room/events.ts +7 -0
- package/src/room/participant/LocalParticipant.ts +44 -6
- package/src/room/participant/RemoteParticipant.ts +12 -10
- package/src/room/track/LocalTrack.ts +4 -0
- package/src/room/track/RemoteTrackPublication.ts +37 -11
@@ -11,7 +11,7 @@ export default class RemoteTrackPublication extends TrackPublication {
|
|
11
11
|
track?: RemoteTrack;
|
12
12
|
|
13
13
|
/** @internal */
|
14
|
-
|
14
|
+
protected allowed = true;
|
15
15
|
|
16
16
|
// keeps track of client's desire to subscribe to a track
|
17
17
|
protected subscribed?: boolean;
|
@@ -28,6 +28,9 @@ export default class RemoteTrackPublication extends TrackPublication {
|
|
28
28
|
*/
|
29
29
|
setSubscribed(subscribed: boolean) {
|
30
30
|
this.subscribed = subscribed;
|
31
|
+
// reset allowed status when desired subscription state changes
|
32
|
+
// server will notify client via signal message if it's not allowed
|
33
|
+
this.allowed = true;
|
31
34
|
|
32
35
|
const sub: UpdateSubscription = {
|
33
36
|
trackSids: [this.trackSid],
|
@@ -46,11 +49,11 @@ export default class RemoteTrackPublication extends TrackPublication {
|
|
46
49
|
|
47
50
|
get subscriptionStatus(): TrackPublication.SubscriptionStatus {
|
48
51
|
if (this.subscribed === false || !super.isSubscribed) {
|
52
|
+
if (!this.allowed) {
|
53
|
+
return TrackPublication.SubscriptionStatus.NotAllowed;
|
54
|
+
}
|
49
55
|
return TrackPublication.SubscriptionStatus.Unsubscribed;
|
50
56
|
}
|
51
|
-
if (!this._allowed) {
|
52
|
-
return TrackPublication.SubscriptionStatus.NotAllowed;
|
53
|
-
}
|
54
57
|
return TrackPublication.SubscriptionStatus.Subscribed;
|
55
58
|
}
|
56
59
|
|
@@ -61,9 +64,6 @@ export default class RemoteTrackPublication extends TrackPublication {
|
|
61
64
|
if (this.subscribed === false) {
|
62
65
|
return false;
|
63
66
|
}
|
64
|
-
if (!this._allowed) {
|
65
|
-
return false;
|
66
|
-
}
|
67
67
|
return super.isSubscribed;
|
68
68
|
}
|
69
69
|
|
@@ -127,11 +127,13 @@ export default class RemoteTrackPublication extends TrackPublication {
|
|
127
127
|
|
128
128
|
/** @internal */
|
129
129
|
setTrack(track?: Track) {
|
130
|
-
|
130
|
+
const prevStatus = this.subscriptionStatus;
|
131
|
+
const prevTrack = this.track;
|
132
|
+
if (prevTrack) {
|
131
133
|
// unregister listener
|
132
|
-
|
133
|
-
|
134
|
-
|
134
|
+
prevTrack.off(TrackEvent.VideoDimensionsChanged, this.handleVideoDimensionsChange);
|
135
|
+
prevTrack.off(TrackEvent.VisibilityChanged, this.handleVisibilityChange);
|
136
|
+
prevTrack.off(TrackEvent.Ended, this.handleEnded);
|
135
137
|
}
|
136
138
|
super.setTrack(track);
|
137
139
|
if (track) {
|
@@ -140,6 +142,22 @@ export default class RemoteTrackPublication extends TrackPublication {
|
|
140
142
|
track.on(TrackEvent.VisibilityChanged, this.handleVisibilityChange);
|
141
143
|
track.on(TrackEvent.Ended, this.handleEnded);
|
142
144
|
}
|
145
|
+
this.emitSubscriptionUpdateIfChanged(prevStatus);
|
146
|
+
if (!!track !== !!prevTrack) {
|
147
|
+
// when undefined status changes, there's a subscription changed event
|
148
|
+
if (track) {
|
149
|
+
this.emit(TrackEvent.Subscribed, track);
|
150
|
+
} else {
|
151
|
+
this.emit(TrackEvent.Unsubscribed, prevTrack);
|
152
|
+
}
|
153
|
+
}
|
154
|
+
}
|
155
|
+
|
156
|
+
/** @internal */
|
157
|
+
setAllowed(allowed: boolean) {
|
158
|
+
const prevStatus = this.subscriptionStatus;
|
159
|
+
this.allowed = allowed;
|
160
|
+
this.emitSubscriptionUpdateIfChanged(prevStatus);
|
143
161
|
}
|
144
162
|
|
145
163
|
/** @internal */
|
@@ -149,6 +167,14 @@ export default class RemoteTrackPublication extends TrackPublication {
|
|
149
167
|
this.track?.setMuted(info.muted);
|
150
168
|
}
|
151
169
|
|
170
|
+
private emitSubscriptionUpdateIfChanged(previousStatus: TrackPublication.SubscriptionStatus) {
|
171
|
+
const currentStatus = this.subscriptionStatus;
|
172
|
+
if (previousStatus === currentStatus) {
|
173
|
+
return;
|
174
|
+
}
|
175
|
+
this.emit(TrackEvent.SubscriptionPermissionChanged, currentStatus, previousStatus);
|
176
|
+
}
|
177
|
+
|
152
178
|
private isManualOperationAllowed(): boolean {
|
153
179
|
if (this.isAdaptiveStream) {
|
154
180
|
log.warn('adaptive stream is enabled, cannot change track settings', {
|