@livedigital/client 3.25.1 → 3.25.2

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.
@@ -350,3 +350,7 @@ export interface ChannelChangeProducePermissionsPayload {
350
350
  changedProducePermissions: TrackLabel[];
351
351
  }
352
352
  export declare type TrackLabelString = 'camera' | 'microphone' | 'screen-video' | 'screen-audio';
353
+ export interface ChangePeerGroupsPayload {
354
+ peerId: string;
355
+ groups: PeerGroup[];
356
+ }
@@ -7,7 +7,7 @@ import Engine from '../engine';
7
7
  import ChannelEventHandler from '../engine/handlers/ChannelEventHandler';
8
8
  import MediaSoupEventHandler from '../engine/handlers/MediaSoupEventHandler';
9
9
  import { LoadBalancerApiClientParams } from '../engine/network/LoadBalancerClient';
10
- import { ActivityConfirmationRequiredPayload, AvailableMediaDevices, ChannelEvent, Logger, LogLevel, LogMessageHandler, Role, TrackLabel } from './common';
10
+ import { ActivityConfirmationRequiredPayload, AvailableMediaDevices, ChannelEvent, Logger, LogLevel, LogMessageHandler, PeerGroup, Role, TrackLabel } from './common';
11
11
  import ChannelAudioObserverEventHandler from '../engine/handlers/ChannelAudioObserverEventHandler';
12
12
  import { BaseTrack, MediaTracksFactory, Track, InitEffectsSDKParams } from './media';
13
13
  import ChannelStateSyncEventHandler from '../engine/handlers/ChannelStateSyncEventHandler';
@@ -87,6 +87,9 @@ export interface ChannelStateInconsistentPayload {
87
87
  export interface ProducePermissionsChangedPayload {
88
88
  labels: TrackLabel[];
89
89
  }
90
+ export interface GroupsChangedPayload {
91
+ groups: PeerGroup[];
92
+ }
90
93
  export interface EngineDependenciesFactory {
91
94
  createSystem: (params: CreateSystemParams) => System;
92
95
  createMedia: (params: CreateMediaParams) => Media;
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@livedigital/client",
3
3
  "author": "vlprojects",
4
4
  "license": "MIT",
5
- "version": "3.25.1",
5
+ "version": "3.25.2",
6
6
  "private": false,
7
7
  "bugs": {
8
8
  "url": "https://github.com/vlprojects/livedigital-sdk/issues"
@@ -16,6 +16,7 @@ export const CHANNEL_EVENTS = {
16
16
  changePeerProducePermissions: 'peer.changeProducePermissions',
17
17
  addPeerProducePermissions: 'peer.addProducePermissions',
18
18
  removePeerProducePermissions: 'peer.removeProducePermissions',
19
+ changePeerGroups: 'peer.groupsChanged',
19
20
  ping: 'peer.ping',
20
21
  } as const;
21
22
 
@@ -66,6 +67,7 @@ export const PEER_EVENTS = {
66
67
  trackFailed: 'track-failed',
67
68
  appDataUpdated: 'app-data-updated',
68
69
  producePermissionsChanged: 'produce-permissions-changed',
70
+ groupsChanged: 'groups-changed',
69
71
  } as const;
70
72
 
71
73
  export const MEDIASOUP_EVENTS = {
@@ -24,7 +24,7 @@ import PeerProducer from './PeerProducer';
24
24
  import PeerConsumer from './PeerConsumer';
25
25
  import PeerTrack from './media/tracks/PeerTrack';
26
26
  import validateAppData from '../helpers/appDataValidator';
27
- import { ProducePermissionsChangedPayload } from '../types/engine';
27
+ import { GroupsChangedPayload, ProducePermissionsChangedPayload } from '../types/engine';
28
28
  import { logResponse } from '../helpers/peer';
29
29
 
30
30
  interface PeerConstructor {
@@ -63,6 +63,7 @@ export type PeerObserverEvents = {
63
63
  [PEER_EVENTS.trackPaused]: [PeerTrack];
64
64
  [PEER_EVENTS.trackFailed]: [PeerTrack];
65
65
  [PEER_EVENTS.producePermissionsChanged]: [ProducePermissionsChangedPayload];
66
+ [PEER_EVENTS.groupsChanged]: [GroupsChangedPayload];
66
67
  [MEDIASOUP_EVENTS.producerClose]: [ProducerData];
67
68
  [MEDIASOUP_EVENTS.newProducer]: [ProducerData];
68
69
  [MEDIASOUP_EVENTS.closeConsumer]: [consumerId: string];
@@ -615,6 +616,11 @@ class Peer {
615
616
  });
616
617
  }
617
618
 
619
+ handleGroupsChange(groups: PeerGroup[]): void {
620
+ this.groups = groups;
621
+ this.observer.safeEmit(PEER_EVENTS.groupsChanged, { groups });
622
+ }
623
+
618
624
  private emitConnectionQuality(): void {
619
625
  // after the initialization a new layer, or new producer, scores of producers and consumers drop for a short time
620
626
  setTimeout(() => {
@@ -1,6 +1,7 @@
1
1
  import { logResponse } from '../../helpers/peer';
2
2
  import {
3
3
  ActivityConfirmationRequiredPayload,
4
+ ChangePeerGroupsPayload,
4
5
  ChangePeerProducePermissionPayload,
5
6
  ChannelChangeProducePermissionsPayload,
6
7
  ChannelEvent,
@@ -126,6 +127,18 @@ class ChannelEventHandler {
126
127
 
127
128
  this.logger.info('Peers deleted produce permissions', { groups, producePermissions });
128
129
  });
130
+
131
+ this.engine.eventsQueue
132
+ .on(CHANNEL_EVENTS.changePeerGroups, (payload: ChangePeerGroupsPayload) => {
133
+ const { peerId, groups } = payload;
134
+ const peer = this.engine.peersRepository.get(peerId);
135
+
136
+ if (!peer) {
137
+ return;
138
+ }
139
+
140
+ peer.handleGroupsChange(groups);
141
+ });
129
142
  }
130
143
 
131
144
  private removeEventListeners() {
@@ -430,3 +430,8 @@ export interface ChannelChangeProducePermissionsPayload {
430
430
  }
431
431
 
432
432
  export type TrackLabelString = 'camera' | 'microphone' | 'screen-video' | 'screen-audio';
433
+
434
+ export interface ChangePeerGroupsPayload {
435
+ peerId: string;
436
+ groups: PeerGroup[];
437
+ }
@@ -14,6 +14,7 @@ import {
14
14
  Logger,
15
15
  LogLevel,
16
16
  LogMessageHandler,
17
+ PeerGroup,
17
18
  Role,
18
19
  TrackLabel,
19
20
  } from './common';
@@ -117,6 +118,10 @@ export interface ProducePermissionsChangedPayload {
117
118
  labels: TrackLabel[];
118
119
  }
119
120
 
121
+ export interface GroupsChangedPayload {
122
+ groups: PeerGroup[];
123
+ }
124
+
120
125
  export interface EngineDependenciesFactory {
121
126
  createSystem: (params: CreateSystemParams) => System;
122
127
  createMedia: (params: CreateMediaParams) => Media;