@stream-io/video-client 1.44.1 → 1.44.3
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/CHANGELOG.md +12 -0
- package/dist/index.browser.es.js +31 -11
- package/dist/index.browser.es.js.map +1 -1
- package/dist/index.cjs.js +31 -11
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.es.js +31 -11
- package/dist/index.es.js.map +1 -1
- package/dist/src/Call.d.ts +1 -1
- package/dist/src/StreamSfuClient.d.ts +1 -0
- package/package.json +1 -1
- package/src/Call.ts +30 -6
- package/src/StreamSfuClient.ts +15 -9
- package/src/StreamVideoClient.ts +2 -1
- package/src/rpc/retryable.ts +2 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
|
|
4
4
|
|
|
5
|
+
## [1.44.3](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-client-1.44.2...@stream-io/video-client-1.44.3) (2026-03-06)
|
|
6
|
+
|
|
7
|
+
### Bug Fixes
|
|
8
|
+
|
|
9
|
+
- **client:** prevent concurrent SFU updateSubscriptions during reconnects ([#2155](https://github.com/GetStream/stream-video-js/issues/2155)) ([1ac32d2](https://github.com/GetStream/stream-video-js/commit/1ac32d261c9a54aa8e3636a60e3c8f3e1407ae16))
|
|
10
|
+
|
|
11
|
+
## [1.44.2](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-client-1.44.1...@stream-io/video-client-1.44.2) (2026-03-06)
|
|
12
|
+
|
|
13
|
+
### Bug Fixes
|
|
14
|
+
|
|
15
|
+
- do not setup speaker early for ringing type calls ([#2154](https://github.com/GetStream/stream-video-js/issues/2154)) ([57adb90](https://github.com/GetStream/stream-video-js/commit/57adb90f03cfaceb4e6d3c050feaea239b80b1d9))
|
|
16
|
+
|
|
5
17
|
## [1.44.1](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-client-1.44.0...@stream-io/video-client-1.44.1) (2026-03-04)
|
|
6
18
|
|
|
7
19
|
### Bug Fixes
|
package/dist/index.browser.es.js
CHANGED
|
@@ -4005,6 +4005,8 @@ const retryable = async (rpc, signal, maxRetries = Number.POSITIVE_INFINITY) =>
|
|
|
4005
4005
|
do {
|
|
4006
4006
|
if (attempt > 0)
|
|
4007
4007
|
await sleep(retryInterval(attempt));
|
|
4008
|
+
if (signal?.aborted)
|
|
4009
|
+
throw new Error(signal.reason);
|
|
4008
4010
|
try {
|
|
4009
4011
|
result = await rpc({ attempt });
|
|
4010
4012
|
}
|
|
@@ -6281,7 +6283,7 @@ const getSdkVersion = (sdk) => {
|
|
|
6281
6283
|
return sdk ? `${sdk.major}.${sdk.minor}.${sdk.patch}` : '0.0.0-development';
|
|
6282
6284
|
};
|
|
6283
6285
|
|
|
6284
|
-
const version = "1.44.
|
|
6286
|
+
const version = "1.44.3";
|
|
6285
6287
|
const [major, minor, patch] = version.split('.');
|
|
6286
6288
|
let sdkInfo = {
|
|
6287
6289
|
type: SdkType.PLAIN_JAVASCRIPT,
|
|
@@ -8582,6 +8584,7 @@ class StreamSfuClient {
|
|
|
8582
8584
|
this.isClosingClean = false;
|
|
8583
8585
|
this.pingIntervalInMs = 5 * 1000;
|
|
8584
8586
|
this.unhealthyTimeoutInMs = 15 * 1000;
|
|
8587
|
+
this.subscriptionsConcurrencyTag = Symbol('subscriptionsConcurrencyTag');
|
|
8585
8588
|
/**
|
|
8586
8589
|
* Promise that resolves when the JoinResponse is received.
|
|
8587
8590
|
* Rejects after a certain threshold if the response is not received.
|
|
@@ -8689,8 +8692,10 @@ class StreamSfuClient {
|
|
|
8689
8692
|
this.close(StreamSfuClient.NORMAL_CLOSURE, reason.substring(0, 115));
|
|
8690
8693
|
};
|
|
8691
8694
|
this.updateSubscriptions = async (tracks) => {
|
|
8692
|
-
|
|
8693
|
-
|
|
8695
|
+
return withoutConcurrency(this.subscriptionsConcurrencyTag, async () => {
|
|
8696
|
+
await this.joinTask;
|
|
8697
|
+
return retryable((invocationMeta) => this.rpc.updateSubscriptions({ sessionId: this.sessionId, tracks }, { invocationMeta }), this.abortController.signal);
|
|
8698
|
+
});
|
|
8694
8699
|
};
|
|
8695
8700
|
this.setPublisher = async (data) => {
|
|
8696
8701
|
await this.joinTask;
|
|
@@ -12997,7 +13002,8 @@ class Call {
|
|
|
12997
13002
|
// const calls = useCalls().filter((c) => c.ringing);
|
|
12998
13003
|
const calls = this.clientStore.calls.filter((c) => c.cid !== this.cid);
|
|
12999
13004
|
this.clientStore.setCalls([this, ...calls]);
|
|
13000
|
-
|
|
13005
|
+
const skipSpeakerApply = isReactNative();
|
|
13006
|
+
await this.applyDeviceConfig(settings, false, skipSpeakerApply);
|
|
13001
13007
|
};
|
|
13002
13008
|
/**
|
|
13003
13009
|
* Loads the information about the call.
|
|
@@ -13020,7 +13026,13 @@ class Call {
|
|
|
13020
13026
|
this.watching = true;
|
|
13021
13027
|
this.clientStore.registerOrUpdateCall(this);
|
|
13022
13028
|
}
|
|
13023
|
-
|
|
13029
|
+
// Skip speaker setup on RN if ringing was requested or the call is already ringing
|
|
13030
|
+
const skipSpeakerApply = isReactNative()
|
|
13031
|
+
? params?.ring === true
|
|
13032
|
+
? true
|
|
13033
|
+
: this.ringing
|
|
13034
|
+
: false;
|
|
13035
|
+
await this.applyDeviceConfig(response.call.settings, false, skipSpeakerApply);
|
|
13024
13036
|
return response;
|
|
13025
13037
|
};
|
|
13026
13038
|
/**
|
|
@@ -13041,7 +13053,13 @@ class Call {
|
|
|
13041
13053
|
this.watching = true;
|
|
13042
13054
|
this.clientStore.registerOrUpdateCall(this);
|
|
13043
13055
|
}
|
|
13044
|
-
|
|
13056
|
+
// Skip speaker setup on RN if ringing was requested or the call is already ringing
|
|
13057
|
+
const skipSpeakerApply = isReactNative()
|
|
13058
|
+
? data?.ring === true
|
|
13059
|
+
? true
|
|
13060
|
+
: this.ringing
|
|
13061
|
+
: false;
|
|
13062
|
+
await this.applyDeviceConfig(response.call.settings, false, skipSpeakerApply);
|
|
13045
13063
|
return response;
|
|
13046
13064
|
};
|
|
13047
13065
|
/**
|
|
@@ -13296,7 +13314,7 @@ class Call {
|
|
|
13296
13314
|
// device settings should be applied only once, we don't have to
|
|
13297
13315
|
// re-apply them on later reconnections or server-side data fetches
|
|
13298
13316
|
if (!this.deviceSettingsAppliedOnce && this.state.settings) {
|
|
13299
|
-
await this.applyDeviceConfig(this.state.settings, true);
|
|
13317
|
+
await this.applyDeviceConfig(this.state.settings, true, false);
|
|
13300
13318
|
globalThis.streamRNVideoSDK?.callManager.start();
|
|
13301
13319
|
this.deviceSettingsAppliedOnce = true;
|
|
13302
13320
|
}
|
|
@@ -14554,8 +14572,10 @@ class Call {
|
|
|
14554
14572
|
*
|
|
14555
14573
|
* @internal
|
|
14556
14574
|
*/
|
|
14557
|
-
this.applyDeviceConfig = async (settings, publish) => {
|
|
14558
|
-
|
|
14575
|
+
this.applyDeviceConfig = async (settings, publish, skipSpeakerApply) => {
|
|
14576
|
+
if (!skipSpeakerApply) {
|
|
14577
|
+
this.speaker.apply(settings);
|
|
14578
|
+
}
|
|
14559
14579
|
await this.camera.apply(settings.video, publish).catch((err) => {
|
|
14560
14580
|
this.logger.warn('Camera init failed', err);
|
|
14561
14581
|
});
|
|
@@ -15870,7 +15890,7 @@ class StreamClient {
|
|
|
15870
15890
|
this.getUserAgent = () => {
|
|
15871
15891
|
if (!this.cachedUserAgent) {
|
|
15872
15892
|
const { clientAppIdentifier = {} } = this.options;
|
|
15873
|
-
const { sdkName = 'js', sdkVersion = "1.44.
|
|
15893
|
+
const { sdkName = 'js', sdkVersion = "1.44.3", ...extras } = clientAppIdentifier;
|
|
15874
15894
|
this.cachedUserAgent = [
|
|
15875
15895
|
`stream-video-${sdkName}-v${sdkVersion}`,
|
|
15876
15896
|
...Object.entries(extras).map(([key, value]) => `${key}=${value}`),
|
|
@@ -16305,7 +16325,7 @@ class StreamVideoClient {
|
|
|
16305
16325
|
clientStore: this.writeableStateStore,
|
|
16306
16326
|
});
|
|
16307
16327
|
call.state.updateFromCallResponse(c.call);
|
|
16308
|
-
await call.applyDeviceConfig(c.call.settings, false);
|
|
16328
|
+
await call.applyDeviceConfig(c.call.settings, false, isReactNative());
|
|
16309
16329
|
if (data.watch) {
|
|
16310
16330
|
await call.setup();
|
|
16311
16331
|
this.writeableStateStore.registerCall(call);
|