@koi-design/callkit 1.0.24-beta.13 → 1.0.24-beta.14

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
@@ -309,6 +309,8 @@ declare class Connect {
309
309
  mediaStream?: MediaStream;
310
310
  userAgent?: UserAgent;
311
311
  registerer?: Registerer;
312
+ lastOptionsUpdateTime: number;
313
+ observeOptionsHeartbeatHandler: ReturnType<typeof setTimeout> | null;
312
314
  sipConnected: boolean;
313
315
  /**
314
316
  * Whether it's an outgoing call
@@ -362,6 +364,7 @@ declare class Connect {
362
364
  * @returns
363
365
  */
364
366
  isInit(): boolean;
367
+ clearObserveOptionsHeartbeatInterval(): void;
365
368
  register(): Promise<void>;
366
369
  reconnect(): Promise<void>;
367
370
  stop(): Promise<void>;
@@ -3592,7 +3592,8 @@ var WebCall = (() => {
3592
3592
  SIP_CONNECT_ERROR: "SIP_CONNECT_ERROR",
3593
3593
  SIP_RECONNECT_ERROR: "SIP_RECONNECT_ERROR",
3594
3594
  INCALL_CONNECT_ERROR: "INCALL_CONNECT_ERROR",
3595
- INCALL_RECONNECT_ERROR: "INCALL_RECONNECT_ERROR"
3595
+ INCALL_RECONNECT_ERROR: "INCALL_RECONNECT_ERROR",
3596
+ OPTIONS_HEARTBEAT_EXPIRED: "OPTIONS_HEARTBEAT_EXPIRED"
3596
3597
  };
3597
3598
 
3598
3599
  // package/call.ts
@@ -18284,6 +18285,8 @@ var WebCall = (() => {
18284
18285
  mediaStream;
18285
18286
  userAgent;
18286
18287
  registerer;
18288
+ lastOptionsUpdateTime = 0;
18289
+ observeOptionsHeartbeatHandler = null;
18287
18290
  sipConnected = false;
18288
18291
  /**
18289
18292
  * Whether it's an outgoing call
@@ -18333,6 +18336,7 @@ var WebCall = (() => {
18333
18336
  this.isOutgoing = false;
18334
18337
  this.isUnprompted = false;
18335
18338
  this.sipConnected = false;
18339
+ this.clearObserveOptionsHeartbeatInterval();
18336
18340
  if (this.isHold) {
18337
18341
  this.setHoldStatus(false);
18338
18342
  }
@@ -18392,6 +18396,13 @@ var WebCall = (() => {
18392
18396
  isInit() {
18393
18397
  return this.connectStatus === CallStatus.init;
18394
18398
  }
18399
+ clearObserveOptionsHeartbeatInterval() {
18400
+ if (this.observeOptionsHeartbeatHandler !== null) {
18401
+ clearInterval(this.observeOptionsHeartbeatHandler);
18402
+ this.observeOptionsHeartbeatHandler = null;
18403
+ }
18404
+ this.lastOptionsUpdateTime = 0;
18405
+ }
18395
18406
  async register() {
18396
18407
  if (this.connectStatus !== CallStatus.init) {
18397
18408
  if (this.connectStatus === CallStatus.registered) {
@@ -18459,6 +18470,32 @@ var WebCall = (() => {
18459
18470
  });
18460
18471
  }
18461
18472
  };
18473
+ const observeOptionsHeartbeat = (userAgent, extra) => {
18474
+ const { that = this } = extra;
18475
+ that.clearObserveOptionsHeartbeatInterval();
18476
+ setInterval(() => {
18477
+ if (that.lastOptionsUpdateTime !== 0) {
18478
+ const now = (/* @__PURE__ */ new Date()).getTime();
18479
+ const diff = now - that.lastOptionsUpdateTime;
18480
+ if (diff > 6e4) {
18481
+ that.callKit.trigger(ConnectEvent.OPTIONS_HEARTBEAT_EXPIRED, {
18482
+ lastOptionsUpdateTime: that.lastOptionsUpdateTime,
18483
+ now
18484
+ });
18485
+ that.clearObserveOptionsHeartbeatInterval();
18486
+ }
18487
+ }
18488
+ }, 6e4);
18489
+ that.lastOptionsUpdateTime = 0;
18490
+ const core = userAgent.userAgentCore;
18491
+ const originalReceiveRequest = core.receiveRequest.bind(core);
18492
+ core.receiveRequest = function(request2) {
18493
+ if (request2.method === "OPTIONS") {
18494
+ that.lastOptionsUpdateTime = (/* @__PURE__ */ new Date()).getTime();
18495
+ }
18496
+ return originalReceiveRequest(request2);
18497
+ };
18498
+ };
18462
18499
  const registererOptions = {};
18463
18500
  this.registerer = new Registerer(this.userAgent, registererOptions);
18464
18501
  this.userAgent.delegate = {
@@ -18566,6 +18603,9 @@ var WebCall = (() => {
18566
18603
  // });
18567
18604
  // }
18568
18605
  };
18606
+ observeOptionsHeartbeat(this.userAgent, {
18607
+ that: this
18608
+ });
18569
18609
  await this.userAgent.start().catch((err) => {
18570
18610
  this.callKit.callCenter.callEnd(false, true);
18571
18611
  this.callKit.user.sendHangUpReason({