@livedigital/client 1.16.0 → 2.0.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/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@livedigital/client",
3
3
  "author": "vlprojects",
4
4
  "license": "MIT",
5
- "version": "1.16.0",
5
+ "version": "2.0.0",
6
6
  "private": false,
7
7
  "bugs": {
8
8
  "url": "https://github.com/vlprojects/livedigital-sdk/issues"
@@ -6,6 +6,7 @@ import {
6
6
  EndTrackPayload,
7
7
  JoinChannelParams,
8
8
  PeerResponse,
9
+ Role,
9
10
  SocketResponse,
10
11
  StartTrackPayload,
11
12
  Track,
@@ -125,6 +126,14 @@ class Engine {
125
126
  return Array.from(this.peersRepository.values());
126
127
  }
127
128
 
129
+ public get hostPeers(): Peer[] {
130
+ return this.peers.filter((peer) => peer.role === 'host');
131
+ }
132
+
133
+ public get audiencePeers(): Peer[] {
134
+ return this.peers.filter((peer) => peer.role === 'audience');
135
+ }
136
+
128
137
  public get mySocketId(): string | undefined {
129
138
  return this.network.socket.id;
130
139
  }
@@ -145,6 +154,15 @@ class Engine {
145
154
  }
146
155
  }
147
156
 
157
+ public async loadPeers(role?: Role): Promise<void> {
158
+ const { peers } = await this.network.socket
159
+ .request(CHANNEL_EVENTS.channelGetPeers, { role }) as { peers: PeerResponse[] };
160
+
161
+ peers
162
+ .filter((peer) => !this.peersRepository.has(peer.id))
163
+ .forEach((peer) => this.setPeer(peer));
164
+ }
165
+
148
166
  public setPeer(peerData: PeerResponse): Peer {
149
167
  const peer = new Peer({
150
168
  ...peerData,
@@ -401,9 +419,6 @@ class Engine {
401
419
  try {
402
420
  await this.network.socket.request(CHANNEL_EVENTS.channelJoin, params);
403
421
  await this.initialize();
404
- const { peers } = await this.network.socket
405
- .request(CHANNEL_EVENTS.channelGetPeers) as { peers: PeerResponse[] };
406
- peers.forEach((peer: PeerResponse) => this.setPeer(peer));
407
422
  this.channelEventsHandler.subscribeToEvents();
408
423
  this.mediaSoupEventsHandler.subscribeToEvents();
409
424
  this.app = params.appId;
package/src/index.ts CHANGED
@@ -4,6 +4,7 @@ import {
4
4
  CreateMicrophoneAudioTrackOptions,
5
5
  CreateScreenMediaOptions,
6
6
  JoinChannelParams,
7
+ Role,
7
8
  Track,
8
9
  } from './types/common';
9
10
  import EnhancedEventEmitter from './EnhancedEventEmitter';
@@ -102,6 +103,10 @@ class Client {
102
103
  deleteTrack(track: Track): void {
103
104
  return this.engine.deleteTrack(track);
104
105
  }
106
+
107
+ loadPeers(role?: Role): Promise<void> {
108
+ return this.engine.loadPeers(role);
109
+ }
105
110
  }
106
111
 
107
112
  export default Client;