@signalapp/ringrtc 2.27.0 → 2.28.1

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, GroupCallKind, 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.GroupCallKind = 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; } });
@@ -19,6 +19,7 @@ Object.defineProperty(exports, "CallingMessage", { enumerable: true, get: functi
19
19
  Object.defineProperty(exports, "ConnectionState", { enumerable: true, get: function () { return Service_2.ConnectionState; } });
20
20
  Object.defineProperty(exports, "GroupCall", { enumerable: true, get: function () { return Service_2.GroupCall; } });
21
21
  Object.defineProperty(exports, "GroupCallEndReason", { enumerable: true, get: function () { return Service_2.GroupCallEndReason; } });
22
+ Object.defineProperty(exports, "GroupCallKind", { enumerable: true, get: function () { return Service_2.GroupCallKind; } });
22
23
  Object.defineProperty(exports, "GroupMemberInfo", { enumerable: true, get: function () { return Service_2.GroupMemberInfo; } });
23
24
  Object.defineProperty(exports, "HangupMessage", { enumerable: true, get: function () { return Service_2.HangupMessage; } });
24
25
  Object.defineProperty(exports, "HangupType", { enumerable: true, get: function () { return Service_2.HangupType; } });
@@ -29,7 +30,7 @@ Object.defineProperty(exports, "LocalDeviceState", { enumerable: true, get: func
29
30
  Object.defineProperty(exports, "OfferMessage", { enumerable: true, get: function () { return Service_2.OfferMessage; } });
30
31
  Object.defineProperty(exports, "OfferType", { enumerable: true, get: function () { return Service_2.OfferType; } });
31
32
  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; } });
33
+ Object.defineProperty(exports, "PeekStatusCodes", { enumerable: true, get: function () { return Service_2.PeekStatusCodes; } });
33
34
  Object.defineProperty(exports, "RemoteDeviceState", { enumerable: true, get: function () { return Service_2.RemoteDeviceState; } });
34
35
  Object.defineProperty(exports, "RingCancelReason", { enumerable: true, get: function () { return Service_2.RingCancelReason; } });
35
36
  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;
@@ -399,6 +403,10 @@ export declare class VideoRequest {
399
403
  framerate: number | undefined;
400
404
  constructor(demuxId: number, width: number, height: number, framerate: number | undefined);
401
405
  }
406
+ export declare enum GroupCallKind {
407
+ SignalGroup = 0,
408
+ CallLink = 1
409
+ }
402
410
  export interface GroupCallObserver {
403
411
  requestMembershipProof(groupCall: GroupCall): void;
404
412
  requestGroupMembers(groupCall: GroupCall): void;
@@ -409,6 +417,7 @@ export interface GroupCallObserver {
409
417
  onEnded(groupCall: GroupCall, reason: GroupCallEndReason): void;
410
418
  }
411
419
  export declare class GroupCall {
420
+ private readonly _kind;
412
421
  private readonly _callManager;
413
422
  private readonly _observer;
414
423
  private readonly _clientId;
@@ -416,7 +425,8 @@ export declare class GroupCall {
416
425
  private _localDeviceState;
417
426
  private _remoteDeviceStates;
418
427
  private _peekInfo;
419
- constructor(callManager: CallManager, groupId: Buffer, sfuUrl: string, hkdfExtraInfo: Buffer, audioLevelsIntervalMillis: number | undefined, observer: GroupCallObserver);
428
+ constructor(kind: GroupCallKind, callManager: CallManager, observer: GroupCallObserver, clientId: GroupCallClientId);
429
+ getKind(): GroupCallKind;
420
430
  connect(): void;
421
431
  join(): void;
422
432
  leave(): void;
@@ -430,7 +440,7 @@ export declare class GroupCall {
430
440
  setOutgoingVideoIsScreenShare(isScreenShare: boolean): void;
431
441
  ringAll(): void;
432
442
  resendMediaKeys(): void;
433
- setBandwidthMode(bandwidthMode: BandwidthMode): void;
443
+ setDataMode(dataMode: DataMode): void;
434
444
  requestVideo(resolutions: Array<VideoRequest>, activeSpeakerHeight: number): void;
435
445
  setGroupMembers(members: Array<GroupMemberInfo>): void;
436
446
  setMembershipProof(proof: Buffer): void;
@@ -515,7 +525,7 @@ export declare enum HangupType {
515
525
  Busy = 3,
516
526
  NeedPermission = 4
517
527
  }
518
- export declare enum BandwidthMode {
528
+ export declare enum DataMode {
519
529
  Low = 0,
520
530
  Normal = 1
521
531
  }
@@ -527,7 +537,7 @@ export interface CallManager {
527
537
  setConfig(config: Config): void;
528
538
  setSelfUuid(uuid: Buffer): void;
529
539
  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;
540
+ proceed(callId: CallId, iceServerUsername: string, iceServerPassword: string, iceServerUrls: Array<string>, hideIp: boolean, dataMode: DataMode, audioLevelsIntervalMillis: number): void;
531
541
  accept(callId: CallId): void;
532
542
  ignore(callId: CallId): void;
533
543
  hangup(): void;
@@ -537,7 +547,7 @@ export interface CallManager {
537
547
  setOutgoingAudioEnabled(enabled: boolean): void;
538
548
  setOutgoingVideoEnabled(enabled: boolean): void;
539
549
  setOutgoingVideoIsScreenShare(enabled: boolean): void;
540
- updateBandwidthMode(bandwidthMode: BandwidthMode): void;
550
+ updateDataMode(dataMode: DataMode): void;
541
551
  sendVideoFrame(width: number, height: number, format: VideoPixelFormatEnum, buffer: Buffer): void;
542
552
  receiveVideoFrame(buffer: Buffer, maxWidth: number, maxHeight: number): [number, number] | undefined;
543
553
  receivedOffer(remoteUserId: UserId, remoteDeviceId: DeviceId, localDeviceId: DeviceId, messageAgeSec: number, callId: CallId, offerType: OfferType, opaque: Buffer, senderIdentityKey: Buffer, receiverIdentityKey: Buffer): void;
@@ -549,6 +559,7 @@ export interface CallManager {
549
559
  receivedHttpResponse(requestId: number, status: number, body: Buffer): void;
550
560
  httpRequestFailed(requestId: number, debugInfo: string | undefined): void;
551
561
  createGroupCallClient(groupId: Buffer, sfuUrl: string, hkdfExtraInfo: Buffer, audioLevelsIntervalMillis: number): GroupCallClientId;
562
+ createCallLinkCallClient(sfuUrl: string, authCredentialPresentation: Buffer, linkRootKey: Buffer, adminPasskey: Buffer | undefined, hkdfExtraInfo: Buffer, audioLevelsIntervalMillis: number): GroupCallClientId;
552
563
  deleteGroupCallClient(clientId: GroupCallClientId): void;
553
564
  connect(clientId: GroupCallClientId): void;
554
565
  join(clientId: GroupCallClientId): void;
@@ -560,7 +571,7 @@ export interface CallManager {
560
571
  setOutgoingGroupCallVideoIsScreenShare(clientId: GroupCallClientId, isScreenShare: boolean): void;
561
572
  groupRing(clientId: GroupCallClientId, recipient: Buffer | undefined): void;
562
573
  resendMediaKeys(clientId: GroupCallClientId): void;
563
- setBandwidthMode(clientId: GroupCallClientId, bandwidthMode: BandwidthMode): void;
574
+ setDataMode(clientId: GroupCallClientId, dataMode: DataMode): void;
564
575
  requestVideo(clientId: GroupCallClientId, resolutions: Array<VideoRequest>, activeSpeakerHeight: number): void;
565
576
  setGroupMembers(clientId: GroupCallClientId, members: Array<GroupMemberInfo>): void;
566
577
  setMembershipProof(clientId: GroupCallClientId, proof: Buffer): void;
@@ -569,6 +580,7 @@ export interface CallManager {
569
580
  createCallLink(requestId: number, sfuUrl: string, createCredentialPresentation: Buffer, linkRootKey: Buffer, adminPasskey: Buffer, callLinkPublicParams: Buffer): void;
570
581
  updateCallLink(requestId: number, sfuUrl: string, authCredentialPresentation: Buffer, linkRootKey: Buffer, adminPasskey: Buffer, newName: string | undefined, newRestrictions: number | undefined, newRevoked: boolean | undefined): void;
571
582
  peekGroupCall(requestId: number, sfu_url: string, membership_proof: Buffer, group_members: Array<GroupMemberInfo>): void;
583
+ peekCallLinkCall(requestId: number, sfuUrl: string, authCredentialPresentation: Buffer, linkRootKey: Buffer): void;
572
584
  getAudioInputs(): Array<AudioDevice>;
573
585
  setAudioInput(index: number): void;
574
586
  getAudioOutputs(): Array<AudioDevice>;
@@ -597,7 +609,7 @@ export interface CallManagerCallbacks {
597
609
  handleJoinStateChanged(clientId: GroupCallClientId, joinState: JoinState, demuxId: number | undefined): void;
598
610
  handleRemoteDevicesChanged(clientId: GroupCallClientId, remoteDeviceStates: Array<RemoteDeviceState>): void;
599
611
  handlePeekChanged(clientId: GroupCallClientId, info: PeekInfo): void;
600
- handlePeekResponse(requestId: number, info: PeekInfo): void;
612
+ handlePeekResponse(requestId: number, statusCode: number, info: PeekInfo | undefined): void;
601
613
  handleEnded(clientId: GroupCallClientId, reason: GroupCallEndReason): void;
602
614
  onLogMessage(level: number, fileName: string, line: number, message: string): void;
603
615
  }
@@ -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.GroupCallKind = 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(GroupCallKind.SignalGroup, 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(GroupCallKind.CallLink, 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.
@@ -1405,16 +1429,25 @@ class VideoRequest {
1405
1429
  }
1406
1430
  }
1407
1431
  exports.VideoRequest = VideoRequest;
1432
+ var GroupCallKind;
1433
+ (function (GroupCallKind) {
1434
+ GroupCallKind[GroupCallKind["SignalGroup"] = 0] = "SignalGroup";
1435
+ GroupCallKind[GroupCallKind["CallLink"] = 1] = "CallLink";
1436
+ })(GroupCallKind = exports.GroupCallKind || (exports.GroupCallKind = {}));
1408
1437
  class GroupCall {
1409
1438
  get clientId() {
1410
1439
  return this._clientId;
1411
1440
  }
1412
1441
  // Called by UI via RingRTC object
1413
- constructor(callManager, groupId, sfuUrl, hkdfExtraInfo, audioLevelsIntervalMillis, observer) {
1442
+ constructor(kind, callManager, observer, clientId) {
1443
+ this._kind = kind;
1414
1444
  this._callManager = callManager;
1415
1445
  this._observer = observer;
1446
+ this._clientId = clientId;
1416
1447
  this._localDeviceState = new LocalDeviceState();
1417
- this._clientId = this._callManager.createGroupCallClient(groupId, sfuUrl, hkdfExtraInfo, audioLevelsIntervalMillis || 0);
1448
+ }
1449
+ getKind() {
1450
+ return this._kind;
1418
1451
  }
1419
1452
  // Called by UI
1420
1453
  connect() {
@@ -1477,8 +1510,8 @@ class GroupCall {
1477
1510
  this._callManager.resendMediaKeys(this._clientId);
1478
1511
  }
1479
1512
  // Called by UI
1480
- setBandwidthMode(bandwidthMode) {
1481
- this._callManager.setBandwidthMode(this._clientId, bandwidthMode);
1513
+ setDataMode(dataMode) {
1514
+ this._callManager.setDataMode(this._clientId, dataMode);
1482
1515
  }
1483
1516
  // Called by UI
1484
1517
  requestVideo(resolutions, activeSpeakerHeight) {
@@ -1656,11 +1689,11 @@ var HangupType;
1656
1689
  HangupType[HangupType["Busy"] = 3] = "Busy";
1657
1690
  HangupType[HangupType["NeedPermission"] = 4] = "NeedPermission";
1658
1691
  })(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 = {}));
1692
+ var DataMode;
1693
+ (function (DataMode) {
1694
+ DataMode[DataMode["Low"] = 0] = "Low";
1695
+ DataMode[DataMode["Normal"] = 1] = "Normal";
1696
+ })(DataMode = exports.DataMode || (exports.DataMode = {}));
1664
1697
  /// Describes why a ring was cancelled.
1665
1698
  var RingCancelReason;
1666
1699
  (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.1",
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": "dbb62fd077e90117bb6c4d093c8da810067054ad4f577e943e0b9ed22419a10b"
27
27
  },
28
28
  "author": "",
29
29
  "license": "AGPL-3.0-only",