@signalapp/ringrtc 2.27.0 → 2.28.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/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { RingRTCType } from './ringrtc/Service';
2
- export { AnswerMessage, AudioDevice, BandwidthMode, BusyMessage, Call, CallEndedReason, CallId, CallLogLevel, CallMessageUrgency, CallSettings, CallState, CallingMessage, ConnectionState, DeviceId, GroupCall, GroupCallEndReason, GroupCallObserver, GroupMemberInfo, HangupMessage, HangupType, HttpMethod, HttpResult, IceCandidateMessage, JoinState, LocalDeviceState, OfferMessage, OfferType, OpaqueMessage, PeekInfo, RemoteDeviceState, RingCancelReason, RingRTCType, RingUpdate, UserId, VideoCapturer, VideoRenderer, VideoRequest, callIdFromEra, callIdFromRingId, } from './ringrtc/Service';
2
+ export { AnswerMessage, AudioDevice, DataMode, BusyMessage, Call, CallEndedReason, CallId, CallLogLevel, CallMessageUrgency, CallSettings, CallState, CallingMessage, ConnectionState, DeviceId, GroupCall, GroupCallEndReason, GroupCallObserver, GroupMemberInfo, HangupMessage, HangupType, HttpMethod, HttpResult, IceCandidateMessage, JoinState, LocalDeviceState, OfferMessage, OfferType, OpaqueMessage, PeekDeviceInfo, PeekInfo, PeekStatusCodes, RemoteDeviceState, RingCancelReason, RingRTCType, RingUpdate, UserId, VideoCapturer, VideoRenderer, VideoRequest, callIdFromEra, callIdFromRingId, } from './ringrtc/Service';
3
3
  export { CanvasVideoRenderer, GumVideoCapturer, VideoFrameSource, MAX_VIDEO_CAPTURE_AREA, MAX_VIDEO_CAPTURE_BUFFER_SIZE, MAX_VIDEO_CAPTURE_HEIGHT, MAX_VIDEO_CAPTURE_WIDTH, } from './ringrtc/VideoSupport';
4
4
  export { CallLinkRootKey, CallLinkRestrictions, CallLinkState, } from './ringrtc/CallLinks';
5
5
  export declare const RingRTC: RingRTCType;
package/dist/index.js CHANGED
@@ -4,11 +4,11 @@
4
4
  // SPDX-License-Identifier: AGPL-3.0-only
5
5
  //
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.RingRTC = exports.CallLinkState = exports.CallLinkRestrictions = exports.CallLinkRootKey = exports.MAX_VIDEO_CAPTURE_WIDTH = exports.MAX_VIDEO_CAPTURE_HEIGHT = exports.MAX_VIDEO_CAPTURE_BUFFER_SIZE = exports.MAX_VIDEO_CAPTURE_AREA = exports.GumVideoCapturer = exports.CanvasVideoRenderer = exports.callIdFromRingId = exports.callIdFromEra = exports.VideoRequest = exports.RingUpdate = exports.RingRTCType = exports.RingCancelReason = exports.RemoteDeviceState = exports.PeekInfo = exports.OpaqueMessage = exports.OfferType = exports.OfferMessage = exports.LocalDeviceState = exports.JoinState = exports.IceCandidateMessage = exports.HttpMethod = exports.HangupType = exports.HangupMessage = exports.GroupMemberInfo = exports.GroupCallEndReason = exports.GroupCall = exports.ConnectionState = exports.CallingMessage = exports.CallState = exports.CallMessageUrgency = exports.CallLogLevel = exports.CallEndedReason = exports.Call = exports.BusyMessage = exports.BandwidthMode = exports.AnswerMessage = void 0;
7
+ exports.RingRTC = exports.CallLinkState = exports.CallLinkRestrictions = exports.CallLinkRootKey = exports.MAX_VIDEO_CAPTURE_WIDTH = exports.MAX_VIDEO_CAPTURE_HEIGHT = exports.MAX_VIDEO_CAPTURE_BUFFER_SIZE = exports.MAX_VIDEO_CAPTURE_AREA = exports.GumVideoCapturer = exports.CanvasVideoRenderer = exports.callIdFromRingId = exports.callIdFromEra = exports.VideoRequest = exports.RingUpdate = exports.RingRTCType = exports.RingCancelReason = exports.RemoteDeviceState = exports.PeekStatusCodes = exports.OpaqueMessage = exports.OfferType = exports.OfferMessage = exports.LocalDeviceState = exports.JoinState = exports.IceCandidateMessage = exports.HttpMethod = exports.HangupType = exports.HangupMessage = exports.GroupMemberInfo = exports.GroupCallEndReason = exports.GroupCall = exports.ConnectionState = exports.CallingMessage = exports.CallState = exports.CallMessageUrgency = exports.CallLogLevel = exports.CallEndedReason = exports.Call = exports.BusyMessage = exports.DataMode = exports.AnswerMessage = void 0;
8
8
  const Service_1 = require("./ringrtc/Service");
9
9
  var Service_2 = require("./ringrtc/Service");
10
10
  Object.defineProperty(exports, "AnswerMessage", { enumerable: true, get: function () { return Service_2.AnswerMessage; } });
11
- Object.defineProperty(exports, "BandwidthMode", { enumerable: true, get: function () { return Service_2.BandwidthMode; } });
11
+ Object.defineProperty(exports, "DataMode", { enumerable: true, get: function () { return Service_2.DataMode; } });
12
12
  Object.defineProperty(exports, "BusyMessage", { enumerable: true, get: function () { return Service_2.BusyMessage; } });
13
13
  Object.defineProperty(exports, "Call", { enumerable: true, get: function () { return Service_2.Call; } });
14
14
  Object.defineProperty(exports, "CallEndedReason", { enumerable: true, get: function () { return Service_2.CallEndedReason; } });
@@ -29,7 +29,7 @@ Object.defineProperty(exports, "LocalDeviceState", { enumerable: true, get: func
29
29
  Object.defineProperty(exports, "OfferMessage", { enumerable: true, get: function () { return Service_2.OfferMessage; } });
30
30
  Object.defineProperty(exports, "OfferType", { enumerable: true, get: function () { return Service_2.OfferType; } });
31
31
  Object.defineProperty(exports, "OpaqueMessage", { enumerable: true, get: function () { return Service_2.OpaqueMessage; } });
32
- Object.defineProperty(exports, "PeekInfo", { enumerable: true, get: function () { return Service_2.PeekInfo; } });
32
+ Object.defineProperty(exports, "PeekStatusCodes", { enumerable: true, get: function () { return Service_2.PeekStatusCodes; } });
33
33
  Object.defineProperty(exports, "RemoteDeviceState", { enumerable: true, get: function () { return Service_2.RemoteDeviceState; } });
34
34
  Object.defineProperty(exports, "RingCancelReason", { enumerable: true, get: function () { return Service_2.RingCancelReason; } });
35
35
  Object.defineProperty(exports, "RingRTCType", { enumerable: true, get: function () { return Service_2.RingRTCType; } });
@@ -9,18 +9,20 @@ declare class Config {
9
9
  }
10
10
  type GroupId = Buffer;
11
11
  type GroupCallUserId = Buffer;
12
- export declare class PeekDeviceInfo {
12
+ export interface PeekDeviceInfo {
13
13
  demuxId: number;
14
14
  userId?: GroupCallUserId;
15
- constructor(demuxId: number, userId: GroupCallUserId | undefined);
16
15
  }
17
- export declare class PeekInfo {
16
+ export interface PeekInfo {
18
17
  devices: Array<PeekDeviceInfo>;
19
18
  creator?: GroupCallUserId;
20
19
  eraId?: string;
21
20
  maxDevices?: number;
22
21
  deviceCount: number;
23
- constructor();
22
+ }
23
+ export declare enum PeekStatusCodes {
24
+ EXPIRED_CALL_LINK = 703,
25
+ INVALID_CALL_LINK = 704
24
26
  }
25
27
  declare enum NetworkAdapterType {
26
28
  Unknown = 0,
@@ -191,7 +193,9 @@ export declare class RingRTCType {
191
193
  receivedHttpResponse(requestId: number, status: number, body: Buffer): void;
192
194
  httpRequestFailed(requestId: number, debugInfo: string | undefined): void;
193
195
  getGroupCall(groupId: Buffer, sfuUrl: string, hkdfExtraInfo: Buffer, audioLevelsIntervalMillis: number | undefined, observer: GroupCallObserver): GroupCall | undefined;
196
+ getCallLinkCall(sfuUrl: string, authCredentialPresentation: Buffer, rootKey: CallLinkRootKey, adminPasskey: Buffer | undefined, hkdfExtraInfo: Buffer, audioLevelsIntervalMillis: number | undefined, observer: GroupCallObserver): GroupCall | undefined;
194
197
  peekGroupCall(sfuUrl: string, membershipProof: Buffer, groupMembers: Array<GroupMemberInfo>): Promise<PeekInfo>;
198
+ peekCallLinkCall(sfuUrl: string, authCredentialPresentation: Buffer, rootKey: CallLinkRootKey): Promise<HttpResult<PeekInfo>>;
195
199
  requestMembershipProof(clientId: GroupCallClientId): void;
196
200
  requestGroupMembers(clientId: GroupCallClientId): void;
197
201
  handleConnectionStateChanged(clientId: GroupCallClientId, connectionState: ConnectionState): void;
@@ -200,7 +204,7 @@ export declare class RingRTCType {
200
204
  handleAudioLevels(clientId: GroupCallClientId, capturedLevel: RawAudioLevel, receivedLevels: Array<ReceivedAudioLevel>): void;
201
205
  handleRemoteDevicesChanged(clientId: GroupCallClientId, remoteDeviceStates: Array<RemoteDeviceState>): void;
202
206
  handlePeekChanged(clientId: GroupCallClientId, info: PeekInfo): void;
203
- handlePeekResponse(requestId: number, info: PeekInfo): void;
207
+ handlePeekResponse(requestId: number, statusCode: number, info: PeekInfo | undefined): void;
204
208
  handleCallLinkResponse(requestId: number, statusCode: number, state: {
205
209
  name: string;
206
210
  rawRestrictions: number;
@@ -238,7 +242,7 @@ export declare class RingRTCType {
238
242
  export interface CallSettings {
239
243
  iceServer: IceServer;
240
244
  hideIp: boolean;
241
- bandwidthMode: BandwidthMode;
245
+ dataMode: DataMode;
242
246
  audioLevelsIntervalMillis?: number;
243
247
  }
244
248
  interface IceServer {
@@ -309,7 +313,7 @@ export declare class Call {
309
313
  receiveVideoFrame(buffer: Buffer, maxWidth: number, maxHeight: number): [number, number] | undefined;
310
314
  private enableOrDisableCapturer;
311
315
  private setOutgoingVideoEnabled;
312
- updateBandwidthMode(bandwidthMode: BandwidthMode): void;
316
+ updateDataMode(dataMode: DataMode): void;
313
317
  private enableOrDisableRenderer;
314
318
  }
315
319
  export type GroupCallClientId = number;
@@ -416,7 +420,7 @@ export declare class GroupCall {
416
420
  private _localDeviceState;
417
421
  private _remoteDeviceStates;
418
422
  private _peekInfo;
419
- constructor(callManager: CallManager, groupId: Buffer, sfuUrl: string, hkdfExtraInfo: Buffer, audioLevelsIntervalMillis: number | undefined, observer: GroupCallObserver);
423
+ constructor(callManager: CallManager, observer: GroupCallObserver, clientId: GroupCallClientId);
420
424
  connect(): void;
421
425
  join(): void;
422
426
  leave(): void;
@@ -430,7 +434,7 @@ export declare class GroupCall {
430
434
  setOutgoingVideoIsScreenShare(isScreenShare: boolean): void;
431
435
  ringAll(): void;
432
436
  resendMediaKeys(): void;
433
- setBandwidthMode(bandwidthMode: BandwidthMode): void;
437
+ setDataMode(dataMode: DataMode): void;
434
438
  requestVideo(resolutions: Array<VideoRequest>, activeSpeakerHeight: number): void;
435
439
  setGroupMembers(members: Array<GroupMemberInfo>): void;
436
440
  setMembershipProof(proof: Buffer): void;
@@ -515,7 +519,7 @@ export declare enum HangupType {
515
519
  Busy = 3,
516
520
  NeedPermission = 4
517
521
  }
518
- export declare enum BandwidthMode {
522
+ export declare enum DataMode {
519
523
  Low = 0,
520
524
  Normal = 1
521
525
  }
@@ -527,7 +531,7 @@ export interface CallManager {
527
531
  setConfig(config: Config): void;
528
532
  setSelfUuid(uuid: Buffer): void;
529
533
  createOutgoingCall(remoteUserId: UserId, isVideoCall: boolean, localDeviceId: DeviceId): CallId;
530
- proceed(callId: CallId, iceServerUsername: string, iceServerPassword: string, iceServerUrls: Array<string>, hideIp: boolean, bandwidthMode: BandwidthMode, audioLevelsIntervalMillis: number): void;
534
+ proceed(callId: CallId, iceServerUsername: string, iceServerPassword: string, iceServerUrls: Array<string>, hideIp: boolean, dataMode: DataMode, audioLevelsIntervalMillis: number): void;
531
535
  accept(callId: CallId): void;
532
536
  ignore(callId: CallId): void;
533
537
  hangup(): void;
@@ -537,7 +541,7 @@ export interface CallManager {
537
541
  setOutgoingAudioEnabled(enabled: boolean): void;
538
542
  setOutgoingVideoEnabled(enabled: boolean): void;
539
543
  setOutgoingVideoIsScreenShare(enabled: boolean): void;
540
- updateBandwidthMode(bandwidthMode: BandwidthMode): void;
544
+ updateDataMode(dataMode: DataMode): void;
541
545
  sendVideoFrame(width: number, height: number, format: VideoPixelFormatEnum, buffer: Buffer): void;
542
546
  receiveVideoFrame(buffer: Buffer, maxWidth: number, maxHeight: number): [number, number] | undefined;
543
547
  receivedOffer(remoteUserId: UserId, remoteDeviceId: DeviceId, localDeviceId: DeviceId, messageAgeSec: number, callId: CallId, offerType: OfferType, opaque: Buffer, senderIdentityKey: Buffer, receiverIdentityKey: Buffer): void;
@@ -549,6 +553,7 @@ export interface CallManager {
549
553
  receivedHttpResponse(requestId: number, status: number, body: Buffer): void;
550
554
  httpRequestFailed(requestId: number, debugInfo: string | undefined): void;
551
555
  createGroupCallClient(groupId: Buffer, sfuUrl: string, hkdfExtraInfo: Buffer, audioLevelsIntervalMillis: number): GroupCallClientId;
556
+ createCallLinkCallClient(sfuUrl: string, authCredentialPresentation: Buffer, linkRootKey: Buffer, adminPasskey: Buffer | undefined, hkdfExtraInfo: Buffer, audioLevelsIntervalMillis: number): GroupCallClientId;
552
557
  deleteGroupCallClient(clientId: GroupCallClientId): void;
553
558
  connect(clientId: GroupCallClientId): void;
554
559
  join(clientId: GroupCallClientId): void;
@@ -560,7 +565,7 @@ export interface CallManager {
560
565
  setOutgoingGroupCallVideoIsScreenShare(clientId: GroupCallClientId, isScreenShare: boolean): void;
561
566
  groupRing(clientId: GroupCallClientId, recipient: Buffer | undefined): void;
562
567
  resendMediaKeys(clientId: GroupCallClientId): void;
563
- setBandwidthMode(clientId: GroupCallClientId, bandwidthMode: BandwidthMode): void;
568
+ setDataMode(clientId: GroupCallClientId, dataMode: DataMode): void;
564
569
  requestVideo(clientId: GroupCallClientId, resolutions: Array<VideoRequest>, activeSpeakerHeight: number): void;
565
570
  setGroupMembers(clientId: GroupCallClientId, members: Array<GroupMemberInfo>): void;
566
571
  setMembershipProof(clientId: GroupCallClientId, proof: Buffer): void;
@@ -569,6 +574,7 @@ export interface CallManager {
569
574
  createCallLink(requestId: number, sfuUrl: string, createCredentialPresentation: Buffer, linkRootKey: Buffer, adminPasskey: Buffer, callLinkPublicParams: Buffer): void;
570
575
  updateCallLink(requestId: number, sfuUrl: string, authCredentialPresentation: Buffer, linkRootKey: Buffer, adminPasskey: Buffer, newName: string | undefined, newRestrictions: number | undefined, newRevoked: boolean | undefined): void;
571
576
  peekGroupCall(requestId: number, sfu_url: string, membership_proof: Buffer, group_members: Array<GroupMemberInfo>): void;
577
+ peekCallLinkCall(requestId: number, sfuUrl: string, authCredentialPresentation: Buffer, linkRootKey: Buffer): void;
572
578
  getAudioInputs(): Array<AudioDevice>;
573
579
  setAudioInput(index: number): void;
574
580
  getAudioOutputs(): Array<AudioDevice>;
@@ -597,7 +603,7 @@ export interface CallManagerCallbacks {
597
603
  handleJoinStateChanged(clientId: GroupCallClientId, joinState: JoinState, demuxId: number | undefined): void;
598
604
  handleRemoteDevicesChanged(clientId: GroupCallClientId, remoteDeviceStates: Array<RemoteDeviceState>): void;
599
605
  handlePeekChanged(clientId: GroupCallClientId, info: PeekInfo): void;
600
- handlePeekResponse(requestId: number, info: PeekInfo): void;
606
+ handlePeekResponse(requestId: number, statusCode: number, info: PeekInfo | undefined): void;
601
607
  handleEnded(clientId: GroupCallClientId, reason: GroupCallEndReason): void;
602
608
  onLogMessage(level: number, fileName: string, line: number, message: string): void;
603
609
  }
@@ -39,7 +39,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
39
39
  return (mod && mod.__esModule) ? mod : { "default": mod };
40
40
  };
41
41
  Object.defineProperty(exports, "__esModule", { value: true });
42
- exports.CallLogLevel = exports.CallEndedReason = exports.CallState = exports.RingCancelReason = exports.BandwidthMode = exports.HangupType = exports.OpaqueMessage = exports.HangupMessage = exports.BusyMessage = exports.IceCandidateMessage = exports.AnswerMessage = exports.OfferType = exports.OfferMessage = exports.CallingMessage = exports.GroupCall = exports.VideoRequest = exports.GroupMemberInfo = exports.RemoteDeviceState = exports.LocalDeviceState = exports.HttpMethod = exports.RingUpdate = exports.CallMessageUrgency = exports.GroupCallEndReason = exports.JoinState = exports.ConnectionState = exports.Call = exports.RingRTCType = exports.ReceivedAudioLevel = exports.NetworkRoute = exports.PeekInfo = exports.PeekDeviceInfo = exports.callIdFromRingId = exports.callIdFromEra = void 0;
42
+ exports.CallLogLevel = exports.CallEndedReason = exports.CallState = exports.RingCancelReason = exports.DataMode = exports.HangupType = exports.OpaqueMessage = exports.HangupMessage = exports.BusyMessage = exports.IceCandidateMessage = exports.AnswerMessage = exports.OfferType = exports.OfferMessage = exports.CallingMessage = exports.GroupCall = exports.VideoRequest = exports.GroupMemberInfo = exports.RemoteDeviceState = exports.LocalDeviceState = exports.HttpMethod = exports.RingUpdate = exports.CallMessageUrgency = exports.GroupCallEndReason = exports.JoinState = exports.ConnectionState = exports.Call = exports.RingRTCType = exports.ReceivedAudioLevel = exports.NetworkRoute = exports.PeekStatusCodes = exports.callIdFromRingId = exports.callIdFromEra = void 0;
43
43
  /* eslint-disable max-classes-per-file */
44
44
  const process = __importStar(require("process"));
45
45
  const CallLinks_1 = require("./CallLinks");
@@ -110,8 +110,7 @@ NativeCallManager.prototype.signalingMessageSent =
110
110
  Native_1.default.cm_signalingMessageSent;
111
111
  NativeCallManager.prototype.signalingMessageSendFailed =
112
112
  Native_1.default.cm_signalingMessageSendFailed;
113
- NativeCallManager.prototype.updateBandwidthMode =
114
- Native_1.default.cm_updateBandwidthMode;
113
+ NativeCallManager.prototype.updateDataMode = Native_1.default.cm_updateDataMode;
115
114
  NativeCallManager.prototype.receivedOffer = Native_1.default.cm_receivedOffer;
116
115
  NativeCallManager.prototype.receivedAnswer = Native_1.default.cm_receivedAnswer;
117
116
  NativeCallManager.prototype.receivedIceCandidates =
@@ -137,6 +136,8 @@ NativeCallManager.prototype.receiveGroupCallVideoFrame =
137
136
  Native_1.default.cm_receiveGroupCallVideoFrame;
138
137
  NativeCallManager.prototype.createGroupCallClient =
139
138
  Native_1.default.cm_createGroupCallClient;
139
+ NativeCallManager.prototype.createCallLinkCallClient =
140
+ Native_1.default.cm_createCallLinkCallClient;
140
141
  NativeCallManager.prototype.deleteGroupCallClient =
141
142
  Native_1.default.cm_deleteGroupCallClient;
142
143
  NativeCallManager.prototype.connect = Native_1.default.cm_connect;
@@ -153,8 +154,7 @@ NativeCallManager.prototype.setOutgoingGroupCallVideoIsScreenShare =
153
154
  NativeCallManager.prototype.setPresenting = Native_1.default.cm_setPresenting;
154
155
  NativeCallManager.prototype.resendMediaKeys =
155
156
  Native_1.default.cm_resendMediaKeys;
156
- NativeCallManager.prototype.setBandwidthMode =
157
- Native_1.default.cm_setBandwidthMode;
157
+ NativeCallManager.prototype.setDataMode = Native_1.default.cm_setDataMode;
158
158
  NativeCallManager.prototype.requestVideo = Native_1.default.cm_requestVideo;
159
159
  NativeCallManager.prototype.setGroupMembers =
160
160
  Native_1.default.cm_setGroupMembers;
@@ -164,26 +164,19 @@ NativeCallManager.prototype.readCallLink = Native_1.default.cm_readCallLink;
164
164
  NativeCallManager.prototype.createCallLink = Native_1.default.cm_createCallLink;
165
165
  NativeCallManager.prototype.updateCallLink = Native_1.default.cm_updateCallLink;
166
166
  NativeCallManager.prototype.peekGroupCall = Native_1.default.cm_peekGroupCall;
167
+ NativeCallManager.prototype.peekCallLinkCall =
168
+ Native_1.default.cm_peekCallLinkCall;
167
169
  NativeCallManager.prototype.getAudioInputs = Native_1.default.cm_getAudioInputs;
168
170
  NativeCallManager.prototype.setAudioInput = Native_1.default.cm_setAudioInput;
169
171
  NativeCallManager.prototype.getAudioOutputs =
170
172
  Native_1.default.cm_getAudioOutputs;
171
173
  NativeCallManager.prototype.setAudioOutput = Native_1.default.cm_setAudioOutput;
172
174
  NativeCallManager.prototype.processEvents = Native_1.default.cm_processEvents;
173
- class PeekDeviceInfo {
174
- constructor(demuxId, userId) {
175
- this.demuxId = demuxId;
176
- this.userId = userId;
177
- }
178
- }
179
- exports.PeekDeviceInfo = PeekDeviceInfo;
180
- class PeekInfo {
181
- constructor() {
182
- this.devices = [];
183
- this.deviceCount = 0;
184
- }
185
- }
186
- exports.PeekInfo = PeekInfo;
175
+ var PeekStatusCodes;
176
+ (function (PeekStatusCodes) {
177
+ PeekStatusCodes[PeekStatusCodes["EXPIRED_CALL_LINK"] = 703] = "EXPIRED_CALL_LINK";
178
+ PeekStatusCodes[PeekStatusCodes["INVALID_CALL_LINK"] = 704] = "INVALID_CALL_LINK";
179
+ })(PeekStatusCodes = exports.PeekStatusCodes || (exports.PeekStatusCodes = {}));
187
180
  // In sync with WebRTC's PeerConnection.AdapterType.
188
181
  // Despite how it looks, this is not an option set.
189
182
  // A network adapter type can only be one of the listed values.
@@ -384,7 +377,7 @@ class RingRTCType {
384
377
  }
385
378
  proceed(callId, settings) {
386
379
  sillyDeadlockProtection(() => {
387
- this.callManager.proceed(callId, settings.iceServer.username || '', settings.iceServer.password || '', settings.iceServer.urls, settings.hideIp, settings.bandwidthMode, settings.audioLevelsIntervalMillis || 0);
380
+ this.callManager.proceed(callId, settings.iceServer.username || '', settings.iceServer.password || '', settings.iceServer.urls, settings.hideIp, settings.dataMode, settings.audioLevelsIntervalMillis || 0);
388
381
  });
389
382
  }
390
383
  // Called by Rust
@@ -708,7 +701,15 @@ class RingRTCType {
708
701
  // Group Calls
709
702
  // Called by UX
710
703
  getGroupCall(groupId, sfuUrl, hkdfExtraInfo, audioLevelsIntervalMillis, observer) {
711
- const groupCall = new GroupCall(this.callManager, groupId, sfuUrl, hkdfExtraInfo, audioLevelsIntervalMillis, observer);
704
+ const clientId = this.callManager.createGroupCallClient(groupId, sfuUrl, hkdfExtraInfo, audioLevelsIntervalMillis || 0);
705
+ const groupCall = new GroupCall(this.callManager, observer, clientId);
706
+ this._groupCallByClientId.set(groupCall.clientId, groupCall);
707
+ return groupCall;
708
+ }
709
+ // Called by UX
710
+ getCallLinkCall(sfuUrl, authCredentialPresentation, rootKey, adminPasskey, hkdfExtraInfo, audioLevelsIntervalMillis, observer) {
711
+ const clientId = this.callManager.createCallLinkCallClient(sfuUrl, authCredentialPresentation, rootKey.bytes, adminPasskey, hkdfExtraInfo, audioLevelsIntervalMillis || 0);
712
+ const groupCall = new GroupCall(this.callManager, observer, clientId);
712
713
  this._groupCallByClientId.set(groupCall.clientId, groupCall);
713
714
  return groupCall;
714
715
  }
@@ -720,6 +721,22 @@ class RingRTCType {
720
721
  sillyDeadlockProtection(() => {
721
722
  this.callManager.peekGroupCall(requestId, sfuUrl, membershipProof, groupMembers);
722
723
  });
724
+ return promise.then(result => {
725
+ if (result.success) {
726
+ return result.value;
727
+ }
728
+ else {
729
+ return { devices: [], deviceCount: 0 };
730
+ }
731
+ });
732
+ }
733
+ // Called by UX
734
+ peekCallLinkCall(sfuUrl, authCredentialPresentation, rootKey) {
735
+ const [requestId, promise] = this._peekRequests.add();
736
+ // Response comes back via handlePeekResponse
737
+ sillyDeadlockProtection(() => {
738
+ this.callManager.peekCallLinkCall(requestId, sfuUrl, authCredentialPresentation, rootKey.bytes);
739
+ });
723
740
  return promise;
724
741
  }
725
742
  // Called by Rust
@@ -809,9 +826,16 @@ class RingRTCType {
809
826
  });
810
827
  }
811
828
  // Called by Rust
812
- handlePeekResponse(requestId, info) {
829
+ handlePeekResponse(requestId, statusCode, info) {
813
830
  sillyDeadlockProtection(() => {
814
- if (!this._peekRequests.resolve(requestId, info)) {
831
+ let result;
832
+ if (info) {
833
+ result = { success: true, value: info };
834
+ }
835
+ else {
836
+ result = { success: false, errorStatusCode: statusCode };
837
+ }
838
+ if (!this._peekRequests.resolve(requestId, result)) {
815
839
  this.logWarn(`Invalid request ID for handlePeekResponse: ${requestId}`);
816
840
  }
817
841
  });
@@ -1259,10 +1283,10 @@ class Call {
1259
1283
  }
1260
1284
  });
1261
1285
  }
1262
- updateBandwidthMode(bandwidthMode) {
1286
+ updateDataMode(dataMode) {
1263
1287
  sillyDeadlockProtection(() => {
1264
1288
  try {
1265
- this._callManager.updateBandwidthMode(bandwidthMode);
1289
+ this._callManager.updateDataMode(dataMode);
1266
1290
  }
1267
1291
  catch (_a) {
1268
1292
  // We may not have an active connection any more.
@@ -1410,11 +1434,11 @@ class GroupCall {
1410
1434
  return this._clientId;
1411
1435
  }
1412
1436
  // Called by UI via RingRTC object
1413
- constructor(callManager, groupId, sfuUrl, hkdfExtraInfo, audioLevelsIntervalMillis, observer) {
1437
+ constructor(callManager, observer, clientId) {
1414
1438
  this._callManager = callManager;
1415
1439
  this._observer = observer;
1440
+ this._clientId = clientId;
1416
1441
  this._localDeviceState = new LocalDeviceState();
1417
- this._clientId = this._callManager.createGroupCallClient(groupId, sfuUrl, hkdfExtraInfo, audioLevelsIntervalMillis || 0);
1418
1442
  }
1419
1443
  // Called by UI
1420
1444
  connect() {
@@ -1477,8 +1501,8 @@ class GroupCall {
1477
1501
  this._callManager.resendMediaKeys(this._clientId);
1478
1502
  }
1479
1503
  // Called by UI
1480
- setBandwidthMode(bandwidthMode) {
1481
- this._callManager.setBandwidthMode(this._clientId, bandwidthMode);
1504
+ setDataMode(dataMode) {
1505
+ this._callManager.setDataMode(this._clientId, dataMode);
1482
1506
  }
1483
1507
  // Called by UI
1484
1508
  requestVideo(resolutions, activeSpeakerHeight) {
@@ -1656,11 +1680,11 @@ var HangupType;
1656
1680
  HangupType[HangupType["Busy"] = 3] = "Busy";
1657
1681
  HangupType[HangupType["NeedPermission"] = 4] = "NeedPermission";
1658
1682
  })(HangupType = exports.HangupType || (exports.HangupType = {}));
1659
- var BandwidthMode;
1660
- (function (BandwidthMode) {
1661
- BandwidthMode[BandwidthMode["Low"] = 0] = "Low";
1662
- BandwidthMode[BandwidthMode["Normal"] = 1] = "Normal";
1663
- })(BandwidthMode = exports.BandwidthMode || (exports.BandwidthMode = {}));
1683
+ var DataMode;
1684
+ (function (DataMode) {
1685
+ DataMode[DataMode["Low"] = 0] = "Low";
1686
+ DataMode[DataMode["Normal"] = 1] = "Normal";
1687
+ })(DataMode = exports.DataMode || (exports.DataMode = {}));
1664
1688
  /// Describes why a ring was cancelled.
1665
1689
  var RingCancelReason;
1666
1690
  (function (RingCancelReason) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@signalapp/ringrtc",
3
- "version": "2.27.0",
3
+ "version": "2.28.0",
4
4
  "description": "Signal Messenger voice and video calling library.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -23,7 +23,7 @@
23
23
  },
24
24
  "config": {
25
25
  "prebuildUrl": "https://build-artifacts.signal.org/libraries/ringrtc-desktop-build-v${npm_package_version}.tar.gz",
26
- "prebuildChecksum": "864c376c4998ae9a0a832c5753089e881d5466e2bbae5d11dae7486226129d5a"
26
+ "prebuildChecksum": "5d4bd3c13ee3373d0e67dacce7e64a422fdc4e0eb8f9c551495fa5b90ec1f322"
27
27
  },
28
28
  "author": "",
29
29
  "license": "AGPL-3.0-only",