@stream-io/video-client 1.6.0 → 1.6.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.cjs.js CHANGED
@@ -6756,7 +6756,7 @@ const logLevels = Object.freeze({
6756
6756
  warn: 3,
6757
6757
  error: 4,
6758
6758
  });
6759
- let logger$2;
6759
+ let logger$1;
6760
6760
  let level = 'info';
6761
6761
  const logToConsole = (logLevel, message, ...args) => {
6762
6762
  let logMethod;
@@ -6790,7 +6790,7 @@ const logToConsole = (logLevel, message, ...args) => {
6790
6790
  logMethod(message, ...args);
6791
6791
  };
6792
6792
  const setLogger = (l, lvl) => {
6793
- logger$2 = l;
6793
+ logger$1 = l;
6794
6794
  if (lvl) {
6795
6795
  setLogLevel(lvl);
6796
6796
  }
@@ -6800,7 +6800,7 @@ const setLogLevel = (l) => {
6800
6800
  };
6801
6801
  const getLogLevel = () => level;
6802
6802
  const getLogger = (withTags) => {
6803
- const loggerMethod = logger$2 || logToConsole;
6803
+ const loggerMethod = logger$1 || logToConsole;
6804
6804
  const tags = (withTags || []).filter(Boolean).join(':');
6805
6805
  const result = (logLevel, message, ...args) => {
6806
6806
  if (logLevels[logLevel] >= logLevels[level]) {
@@ -7903,6 +7903,13 @@ class CallState {
7903
7903
  this.setOwnCapabilities = (capabilities) => {
7904
7904
  return this.setCurrentValue(this.ownCapabilitiesSubject, capabilities);
7905
7905
  };
7906
+ /**
7907
+ * Sets the time when this call has been ended.
7908
+ * @param endedAt the time when this call has been ended.
7909
+ */
7910
+ this.setEndedAt = (endedAt) => {
7911
+ return this.setCurrentValue(this.endedAtSubject, endedAt);
7912
+ };
7906
7913
  /**
7907
7914
  * Will try to find the participant with the given sessionId in the current call.
7908
7915
  *
@@ -8089,7 +8096,7 @@ class CallState {
8089
8096
  this.setCurrentValue(this.createdAtSubject, new Date(call.created_at));
8090
8097
  this.setCurrentValue(this.updatedAtSubject, new Date(call.updated_at));
8091
8098
  this.setCurrentValue(this.startsAtSubject, call.starts_at ? new Date(call.starts_at) : undefined);
8092
- this.setCurrentValue(this.endedAtSubject, call.ended_at ? new Date(call.ended_at) : undefined);
8099
+ this.setEndedAt(call.ended_at ? new Date(call.ended_at) : undefined);
8093
8100
  this.setCurrentValue(this.createdBySubject, call.created_by);
8094
8101
  this.setCurrentValue(this.customSubject, call.custom);
8095
8102
  this.setCurrentValue(this.egressSubject, call.egress);
@@ -8738,7 +8745,7 @@ const enableHighQualityAudio = (sdp, trackMid, maxBitrate = 510000) => {
8738
8745
  return SDP__namespace.write(parsedSdp);
8739
8746
  };
8740
8747
 
8741
- const version = "1.6.0" ;
8748
+ const version = "1.6.1" ;
8742
8749
  const [major, minor, patch] = version.split('.');
8743
8750
  let sdkInfo = {
8744
8751
  type: SdkType.PLAIN_JAVASCRIPT,
@@ -10028,15 +10035,37 @@ const watchCallRejected = (call) => {
10028
10035
  * Event handler that watches the delivery of `call.ended` Websocket event.
10029
10036
  */
10030
10037
  const watchCallEnded = (call) => {
10031
- return async function onCallEnded() {
10038
+ return function onCallEnded() {
10032
10039
  const { callingState } = call.state;
10033
10040
  if (callingState === exports.CallingState.RINGING ||
10034
10041
  callingState === exports.CallingState.JOINED ||
10035
10042
  callingState === exports.CallingState.JOINING) {
10036
- await call.leave({ reason: 'call.ended event received' });
10043
+ call.leave({ reason: 'call.ended event received' }).catch((err) => {
10044
+ call.logger('error', 'Failed to leave call after call.ended ', err);
10045
+ });
10037
10046
  }
10038
10047
  };
10039
10048
  };
10049
+ /**
10050
+ * Watches for `callEnded` events.
10051
+ */
10052
+ const watchSfuCallEnded = (call) => {
10053
+ return call.on('callEnded', async (e) => {
10054
+ if (call.state.callingState === exports.CallingState.LEFT)
10055
+ return;
10056
+ try {
10057
+ // `call.ended` event arrived after the call is already left
10058
+ // and all event handlers are detached. We need to manually
10059
+ // update the call state to reflect the call has ended.
10060
+ call.state.setEndedAt(new Date());
10061
+ const reason = CallEndedReason[e.reason];
10062
+ await call.leave({ reason: `callEnded received: ${reason}` });
10063
+ }
10064
+ catch (err) {
10065
+ call.logger('error', 'Failed to leave call after being ended by the SFU', err);
10066
+ }
10067
+ });
10068
+ };
10040
10069
 
10041
10070
  /**
10042
10071
  * Event handler that watches for `callGrantsUpdated` events.
@@ -10064,7 +10093,6 @@ const watchCallGrantsUpdated = (state) => {
10064
10093
  };
10065
10094
  };
10066
10095
 
10067
- const logger$1 = getLogger(['events']);
10068
10096
  /**
10069
10097
  * An event responder which handles the `changePublishQuality` event.
10070
10098
  */
@@ -10110,7 +10138,7 @@ const watchLiveEnded = (dispatcher, call) => {
10110
10138
  return;
10111
10139
  if (!call.permissionsContext.hasPermission(OwnCapability.JOIN_BACKSTAGE)) {
10112
10140
  call.leave({ reason: 'live ended' }).catch((err) => {
10113
- logger$1('error', 'Failed to leave call after live ended', err);
10141
+ call.logger('error', 'Failed to leave call after live ended', err);
10114
10142
  });
10115
10143
  }
10116
10144
  });
@@ -10122,8 +10150,9 @@ const watchSfuErrorReports = (dispatcher) => {
10122
10150
  return dispatcher.on('error', (e) => {
10123
10151
  if (!e.error)
10124
10152
  return;
10153
+ const logger = getLogger(['SfuClient']);
10125
10154
  const { error, reconnectStrategy } = e;
10126
- logger$1('error', 'SFU reported error', {
10155
+ logger('error', 'SFU reported error', {
10127
10156
  code: ErrorCode[error.code],
10128
10157
  reconnectStrategy: WebsocketReconnectStrategy[reconnectStrategy],
10129
10158
  message: error.message,
@@ -10141,17 +10170,6 @@ const watchPinsUpdated = (state) => {
10141
10170
  state.setServerSidePins(pins);
10142
10171
  };
10143
10172
  };
10144
- /**
10145
- * Watches for `callEnded` events.
10146
- */
10147
- const watchSfuCallEnded = (call) => {
10148
- return call.on('callEnded', (e) => {
10149
- const reason = CallEndedReason[e.reason];
10150
- call.leave({ reason }).catch((err) => {
10151
- logger$1('error', 'Failed to leave call after call ended by the SFU', err);
10152
- });
10153
- });
10154
- };
10155
10173
 
10156
10174
  /**
10157
10175
  * An event handler that handles soft mutes.
@@ -16069,7 +16087,7 @@ class StreamClient {
16069
16087
  });
16070
16088
  };
16071
16089
  this.getUserAgent = () => {
16072
- const version = "1.6.0" ;
16090
+ const version = "1.6.1" ;
16073
16091
  return (this.userAgent ||
16074
16092
  `stream-video-javascript-client-${this.node ? 'node' : 'browser'}-${version}`);
16075
16093
  };