From a015a711ab466358b54cda095792e319251fb5d9 Mon Sep 17 00:00:00 2001 From: Kaustubh Kumar Date: Wed, 4 Sep 2024 11:39:42 +0530 Subject: [PATCH 01/14] Update README.md (#3222) --- examples/prebuilt-react-integration/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/prebuilt-react-integration/README.md b/examples/prebuilt-react-integration/README.md index a4ee892a36..c0ba926c6d 100644 --- a/examples/prebuilt-react-integration/README.md +++ b/examples/prebuilt-react-integration/README.md @@ -4,7 +4,7 @@ ### How to run locally? -- Run `yarn build` at the root level of the repo. +- Run `yarn && yarn build` at the root level of the repo (./web-sdks) - Then, navigate to this folder and run `yarn dev` ### Facing a problem? From c094ee272ccb2f9fb1995a9b74f7bd14c9f0d58a Mon Sep 17 00:00:00 2001 From: Ravi theja Date: Wed, 18 Sep 2024 17:47:34 +0530 Subject: [PATCH 02/14] feat: apply policy settings to tracks added via addTrack --- packages/hms-video-store/src/sdk/index.ts | 46 ++++++++++++++++++- .../hms-video-store/src/utils/validations.ts | 12 +++++ 2 files changed, 56 insertions(+), 2 deletions(-) diff --git a/packages/hms-video-store/src/sdk/index.ts b/packages/hms-video-store/src/sdk/index.ts index 4bfda90f5e..e0a015a817 100644 --- a/packages/hms-video-store/src/sdk/index.ts +++ b/packages/hms-video-store/src/sdk/index.ts @@ -24,6 +24,7 @@ import { HMSAction } from '../error/HMSAction'; import { HMSException } from '../error/HMSException'; import { EventBus } from '../events/EventBus'; import { + HMSAudioCodec, HMSChangeMultiTrackStateParams, HMSConfig, HMSConnectionQualityListener, @@ -37,6 +38,7 @@ import { HMSRole, HMSRoleChangeRequest, HMSScreenShareConfig, + HMSVideoCodec, TokenRequest, TokenRequestOptions, } from '../interfaces'; @@ -51,6 +53,7 @@ import { RTMPRecordingConfig } from '../interfaces/rtmp-recording-config'; import InitialSettings from '../interfaces/settings'; import { HMSAudioListener, HMSPeerUpdate, HMSTrackUpdate, HMSUpdateListener } from '../interfaces/update-listener'; import { PlaylistManager, TranscriptionConfig } from '../internal'; +import { HMSAudioTrackSettingsBuilder, HMSVideoTrackSettingsBuilder } from '../media/settings'; import { HMSLocalStream } from '../media/streams/HMSLocalStream'; import { HMSLocalAudioTrack, @@ -95,7 +98,7 @@ import HMSLogger, { HMSLogLevel } from '../utils/logger'; import { HMSAudioContextHandler } from '../utils/media'; import { isNode } from '../utils/support'; import { workerSleep } from '../utils/timer-utils'; -import { validateMediaDevicesExistence, validateRTCPeerConnection } from '../utils/validations'; +import { validateMediaDevicesExistence, validatePublishParams, validateRTCPeerConnection } from '../utils/validations'; const INITIAL_STATE = { published: false, @@ -954,7 +957,8 @@ export class HMSSdk implements HMSInterface { const TrackKlass = type === 'audio' ? HMSLocalAudioTrack : HMSLocalVideoTrack; const hmsTrack = new TrackKlass(stream, track, source, this.eventBus); - this.setPlaylistSettings({ + await this.applySettings(hmsTrack); + await this.setPlaylistSettings({ track, hmsTrack, source, @@ -1603,4 +1607,42 @@ export class HMSSdk implements HMSInterface { this.playlistManager.stop(HMSPlaylistType.video); } } + + // eslint-disable-next-line complexity + private async applySettings(track: HMSLocalTrack) { + validatePublishParams(this.store); + const publishParams = this.store.getPublishParams(); + // this is not needed but added for avoiding ? later + if (!publishParams) { + return; + } + if (track instanceof HMSLocalVideoTrack) { + const publishKey = track.source === 'regular' ? 'video' : track.source === 'screen' ? 'screen' : ''; + if (!publishKey || !publishParams.allowed.includes(publishKey)) { + return; + } + const video = publishParams[publishKey]; + if (!video) { + return; + } + const settings = new HMSVideoTrackSettingsBuilder() + .codec(video.codec as HMSVideoCodec) + .maxBitrate(video.bitRate) + .maxFramerate(video.frameRate) + .setWidth(video.width) + .setHeight(video.height) + .build(); + + await track.setSettings(settings); + } else if (track instanceof HMSLocalAudioTrack) { + if (!publishParams.allowed.includes('audio')) { + return; + } + const settings = new HMSAudioTrackSettingsBuilder() + .codec(publishParams.audio.codec as HMSAudioCodec) + .maxBitrate(publishParams.audio.bitRate) + .build(); + await track.setSettings(settings); + } + } } diff --git a/packages/hms-video-store/src/utils/validations.ts b/packages/hms-video-store/src/utils/validations.ts index fc75902e44..a1a1824c16 100644 --- a/packages/hms-video-store/src/utils/validations.ts +++ b/packages/hms-video-store/src/utils/validations.ts @@ -1,5 +1,7 @@ import HMSLogger from './logger'; import { ErrorFactory } from '../error/ErrorFactory'; +import { HMSAction } from '../error/HMSAction'; +import { Store } from '../sdk/store'; const TAG = `[VALIDATIONS]`; @@ -32,3 +34,13 @@ export const validateMediaDevicesExistence = () => { throw error; } }; + +export const validatePublishParams = (store: Store) => { + const publishParams = store.getPublishParams(); + if (!publishParams) { + throw ErrorFactory.GenericErrors.NotConnected( + HMSAction.VALIDATION, + 'call addTrack after preview or join is successful', + ); + } +}; From da50781c2357d6201da1c94dcfef574a0081e2dc Mon Sep 17 00:00:00 2001 From: Ravi theja Date: Wed, 18 Sep 2024 19:59:15 +0530 Subject: [PATCH 03/14] Release - 0.12.20 --- .../prebuilt-react-integration/package.json | 2 +- packages/hls-player/package.json | 4 +-- packages/hls-stats/package.json | 2 +- packages/hms-video-store/package.json | 2 +- packages/hms-virtual-background/package.json | 6 ++-- packages/hms-whiteboard/package.json | 2 +- packages/react-icons/package.json | 2 +- packages/react-sdk/package.json | 4 +-- packages/roomkit-react/package.json | 12 +++---- packages/roomkit-web/package.json | 4 +-- yarn.lock | 31 ++----------------- 11 files changed, 23 insertions(+), 48 deletions(-) diff --git a/examples/prebuilt-react-integration/package.json b/examples/prebuilt-react-integration/package.json index ed6de5ef5c..d42595fd1b 100644 --- a/examples/prebuilt-react-integration/package.json +++ b/examples/prebuilt-react-integration/package.json @@ -10,7 +10,7 @@ "preview": "vite preview" }, "dependencies": { - "@100mslive/roomkit-react": "0.3.19", + "@100mslive/roomkit-react": "0.3.20", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/packages/hls-player/package.json b/packages/hls-player/package.json index aef1341044..31993c800e 100644 --- a/packages/hls-player/package.json +++ b/packages/hls-player/package.json @@ -1,6 +1,6 @@ { "name": "@100mslive/hls-player", - "version": "0.3.19", + "version": "0.3.20", "description": "HLS client library which uses HTML5 Video element and Media Source Extension for playback", "main": "dist/index.cjs.js", "module": "dist/index.js", @@ -36,7 +36,7 @@ "author": "100ms", "license": "MIT", "dependencies": { - "@100mslive/hls-stats": "0.4.19", + "@100mslive/hls-stats": "0.4.20", "eventemitter2": "^6.4.9", "hls.js": "1.4.12" } diff --git a/packages/hls-stats/package.json b/packages/hls-stats/package.json index 22693113c2..43a02194e3 100644 --- a/packages/hls-stats/package.json +++ b/packages/hls-stats/package.json @@ -1,6 +1,6 @@ { "name": "@100mslive/hls-stats", - "version": "0.4.19", + "version": "0.4.20", "description": "A simple library that provides stats for your hls stream", "main": "dist/index.cjs.js", "module": "dist/index.js", diff --git a/packages/hms-video-store/package.json b/packages/hms-video-store/package.json index 4de8b79e14..5feeb58a55 100644 --- a/packages/hms-video-store/package.json +++ b/packages/hms-video-store/package.json @@ -1,5 +1,5 @@ { - "version": "0.12.19", + "version": "0.12.20", "license": "MIT", "repository": { "type": "git", diff --git a/packages/hms-virtual-background/package.json b/packages/hms-virtual-background/package.json index db95e6229e..7e4aef1d06 100755 --- a/packages/hms-virtual-background/package.json +++ b/packages/hms-virtual-background/package.json @@ -1,5 +1,5 @@ { - "version": "1.13.19", + "version": "1.13.20", "license": "MIT", "name": "@100mslive/hms-virtual-background", "author": "100ms", @@ -62,10 +62,10 @@ "format": "prettier --write src/**/*.ts" }, "peerDependencies": { - "@100mslive/hms-video-store": "0.12.19" + "@100mslive/hms-video-store": "0.12.20" }, "devDependencies": { - "@100mslive/hms-video-store": "0.12.19" + "@100mslive/hms-video-store": "0.12.20" }, "dependencies": { "@mediapipe/selfie_segmentation": "^0.1.1632777926", diff --git a/packages/hms-whiteboard/package.json b/packages/hms-whiteboard/package.json index 16cefb5a0b..1d28822d5d 100644 --- a/packages/hms-whiteboard/package.json +++ b/packages/hms-whiteboard/package.json @@ -2,7 +2,7 @@ "name": "@100mslive/hms-whiteboard", "author": "100ms", "license": "MIT", - "version": "0.0.9", + "version": "0.0.10", "main": "dist/index.cjs.js", "module": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/react-icons/package.json b/packages/react-icons/package.json index 36b2f3f81d..5e92a12522 100644 --- a/packages/react-icons/package.json +++ b/packages/react-icons/package.json @@ -4,7 +4,7 @@ "main": "dist/index.cjs.js", "module": "dist/index.js", "typings": "dist/index.d.ts", - "version": "0.10.19", + "version": "0.10.20", "author": "100ms", "license": "MIT", "repository": { diff --git a/packages/react-sdk/package.json b/packages/react-sdk/package.json index d11b5e48e4..36dccbbf5f 100644 --- a/packages/react-sdk/package.json +++ b/packages/react-sdk/package.json @@ -4,7 +4,7 @@ "main": "dist/index.cjs.js", "module": "dist/index.js", "typings": "dist/index.d.ts", - "version": "0.10.19", + "version": "0.10.20", "author": "100ms", "license": "MIT", "repository": { @@ -48,7 +48,7 @@ "react": ">=16.8 <19.0.0" }, "dependencies": { - "@100mslive/hms-video-store": "0.12.19", + "@100mslive/hms-video-store": "0.12.20", "react-resize-detector": "^7.0.0", "zustand": "^3.6.2" } diff --git a/packages/roomkit-react/package.json b/packages/roomkit-react/package.json index 6088afa43c..64143afab3 100644 --- a/packages/roomkit-react/package.json +++ b/packages/roomkit-react/package.json @@ -10,7 +10,7 @@ "prebuilt", "roomkit" ], - "version": "0.3.19", + "version": "0.3.20", "author": "100ms", "license": "MIT", "repository": { @@ -75,12 +75,12 @@ "react": ">=17.0.2 <19.0.0" }, "dependencies": { - "@100mslive/hls-player": "0.3.19", + "@100mslive/hls-player": "0.3.20", "@100mslive/hms-noise-cancellation": "0.0.1", - "@100mslive/hms-virtual-background": "1.13.19", - "@100mslive/hms-whiteboard": "0.0.9", - "@100mslive/react-icons": "0.10.19", - "@100mslive/react-sdk": "0.10.19", + "@100mslive/hms-virtual-background": "1.13.20", + "@100mslive/hms-whiteboard": "0.0.10", + "@100mslive/react-icons": "0.10.20", + "@100mslive/react-sdk": "0.10.20", "@100mslive/types-prebuilt": "0.12.12", "@emoji-mart/data": "^1.0.6", "@emoji-mart/react": "^1.0.1", diff --git a/packages/roomkit-web/package.json b/packages/roomkit-web/package.json index 59220be296..a505315d10 100644 --- a/packages/roomkit-web/package.json +++ b/packages/roomkit-web/package.json @@ -1,6 +1,6 @@ { "name": "@100mslive/roomkit-web", - "version": "0.2.19", + "version": "0.2.20", "description": "A web component implementation of 100ms Prebuilt component", "keywords": [ "web-components", @@ -33,7 +33,7 @@ "build": "rm -rf dist && node ../../scripts/build-webapp" }, "dependencies": { - "@100mslive/roomkit-react": "0.3.19", + "@100mslive/roomkit-react": "0.3.20", "@r2wc/react-to-web-component": "2.0.2" } } diff --git a/yarn.lock b/yarn.lock index 091e434c67..8cb23dcb50 100644 --- a/yarn.lock +++ b/yarn.lock @@ -16534,16 +16534,7 @@ string-natural-compare@^3.0.1: resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4" integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw== -"string-width-cjs@npm:string-width@^4.2.0": - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -16648,14 +16639,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -18008,7 +17992,7 @@ worker-timers@^7.0.40: worker-timers-broker "^6.0.95" worker-timers-worker "^7.0.59" -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -18026,15 +18010,6 @@ wrap-ansi@^6.0.1, wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" From 5cee32787412d5b6e8a88179b67439213dc61044 Mon Sep 17 00:00:00 2001 From: hdz-666 <93115614+hdz-666@users.noreply.github.com> Date: Thu, 3 Oct 2024 19:34:16 +0530 Subject: [PATCH 04/14] fix: add stats and websocket url --- .../src/analytics/HTTPAnalyticsTransport.ts | 2 +- packages/hms-video-store/src/interfaces/room.ts | 3 +++ .../hms-video-store/src/reactive-store/adapter.ts | 3 +++ packages/hms-video-store/src/schema/room.ts | 3 +++ packages/hms-video-store/src/sdk/models/HMSRoom.ts | 3 +++ packages/hms-video-store/src/selectors/selectors.ts | 4 +++- packages/hms-video-store/src/transport/index.ts | 8 ++++++++ packages/roomkit-react/src/Stats/Stats.tsx | 12 ++++++++++++ 8 files changed, 36 insertions(+), 2 deletions(-) diff --git a/packages/hms-video-store/src/analytics/HTTPAnalyticsTransport.ts b/packages/hms-video-store/src/analytics/HTTPAnalyticsTransport.ts index e53d020775..71734f97ef 100644 --- a/packages/hms-video-store/src/analytics/HTTPAnalyticsTransport.ts +++ b/packages/hms-video-store/src/analytics/HTTPAnalyticsTransport.ts @@ -38,7 +38,7 @@ class ClientAnalyticsTransport implements IAnalyticsTransportProvider { private failedEvents = new LocalStorage('client-events'); isConnected = true; private env: null | ENV = null; - private websocketURL = ''; + public websocketURL = ''; setEnv(env: ENV) { this.env = env; diff --git a/packages/hms-video-store/src/interfaces/room.ts b/packages/hms-video-store/src/interfaces/room.ts index 073851b2f0..069cee4c20 100644 --- a/packages/hms-video-store/src/interfaces/room.ts +++ b/packages/hms-video-store/src/interfaces/room.ts @@ -40,6 +40,9 @@ export interface HMSRoom { isHipaaEnabled?: boolean; isNoiseCancellationEnabled?: boolean; transcriptions?: HMSTranscriptionInfo[]; + enabledFlags?: string[]; + websocketUrl?: string; + initEndpoint?: string; } export interface HMSRecording { diff --git a/packages/hms-video-store/src/reactive-store/adapter.ts b/packages/hms-video-store/src/reactive-store/adapter.ts index c765a4c8b3..ed57bf177e 100644 --- a/packages/hms-video-store/src/reactive-store/adapter.ts +++ b/packages/hms-video-store/src/reactive-store/adapter.ts @@ -163,6 +163,9 @@ export class SDKToHMS { isVBEnabled: sdkRoom.isVBEnabled, effectsKey: sdkRoom.effectsKey, isHipaaEnabled: sdkRoom.isHipaaEnabled, + enabledFlags: sdkRoom.enabledFlags, + websocketUrl: sdkRoom.websocketUrl, + initEndpoint: sdkRoom.initEndpoint, isNoiseCancellationEnabled: sdkRoom.isNoiseCancellationEnabled, }; } diff --git a/packages/hms-video-store/src/schema/room.ts b/packages/hms-video-store/src/schema/room.ts index b14b2dacf5..311d9c9c96 100644 --- a/packages/hms-video-store/src/schema/room.ts +++ b/packages/hms-video-store/src/schema/room.ts @@ -45,4 +45,7 @@ export interface HMSRoom { effectsKey?: string; isHipaaEnabled?: boolean; isNoiseCancellationEnabled?: boolean; + enabledFlags?: string[]; + websocketUrl?: string; + initEndpoint?: string; } diff --git a/packages/hms-video-store/src/sdk/models/HMSRoom.ts b/packages/hms-video-store/src/sdk/models/HMSRoom.ts index c23b03e0a9..2a2358b20b 100644 --- a/packages/hms-video-store/src/sdk/models/HMSRoom.ts +++ b/packages/hms-video-store/src/sdk/models/HMSRoom.ts @@ -21,6 +21,9 @@ export default class Room implements HMSRoom { effectsKey?: string; isHipaaEnabled?: boolean; isNoiseCancellationEnabled?: boolean; + enabledFlags?: string[]; + websocketUrl?: string; + initEndpoint?: string; constructor(id: string) { this.id = id; diff --git a/packages/hms-video-store/src/selectors/selectors.ts b/packages/hms-video-store/src/selectors/selectors.ts index 7de9ef82c9..951bebaeb7 100644 --- a/packages/hms-video-store/src/selectors/selectors.ts +++ b/packages/hms-video-store/src/selectors/selectors.ts @@ -459,7 +459,9 @@ export const selectIsLargeRoom = createSelector(selectRoom, room => !!room.isLar export const selectIsEffectsEnabled = createSelector(selectRoom, room => !!room.isEffectsEnabled); export const selectIsVBEnabled = createSelector(selectRoom, room => !!room.isVBEnabled); export const selectEffectsKey = createSelector(selectRoom, room => room.effectsKey); - +export const selectWebsocketURL = createSelector(selectRoom, room => room.websocketUrl); +export const selectInitEndpoint = createSelector(selectRoom, room => room.initEndpoint); +export const selectEnabledFlags = createSelector(selectRoom, room => room.enabledFlags); export const selectTemplateAppData = (store: HMSStore) => store.templateAppData; /** @deprecated - use `selectSessionStore` instead */ export const selectSessionMetadata = (store: HMSStore) => store.sessionMetadata; diff --git a/packages/hms-video-store/src/transport/index.ts b/packages/hms-video-store/src/transport/index.ts index 11b418a416..ad3d3c17c4 100644 --- a/packages/hms-video-store/src/transport/index.ts +++ b/packages/hms-video-store/src/transport/index.ts @@ -1088,6 +1088,7 @@ export default class HMSTransport { } } + // eslint-disable-next-line complexity private async internalConnect(token: string, initEndpoint: string, peerId: string, iceServers?: HMSICEServer[]) { HMSLogger.d(TAG, 'connect: started ⏰'); const connectRequestedAt = new Date(); @@ -1109,9 +1110,16 @@ export default class HMSTransport { room.isVBEnabled = this.isFlagEnabled(InitFlags.FLAG_VB_ENABLED); room.isHipaaEnabled = this.isFlagEnabled(InitFlags.FLAG_HIPAA_ENABLED); room.isNoiseCancellationEnabled = this.isFlagEnabled(InitFlags.FLAG_NOISE_CANCELLATION); + room.enabledFlags = []; + const allFlags = Object.values(InitFlags); + room.enabledFlags = allFlags.filter(flag => this.isFlagEnabled(flag)); + room.initEndpoint = initEndpoint; } this.analyticsTimer.end(TimedEvent.INIT); HTTPAnalyticsTransport.setWebsocketEndpoint(this.initConfig.endpoint); + if (room) { + room.websocketUrl = HTTPAnalyticsTransport.websocketURL; + } // if leave was called while init was going on, don't open websocket this.validateNotDisconnected('post init'); await this.openSignal(token, peerId); diff --git a/packages/roomkit-react/src/Stats/Stats.tsx b/packages/roomkit-react/src/Stats/Stats.tsx index b7ee4532bd..ef6e97d726 100644 --- a/packages/roomkit-react/src/Stats/Stats.tsx +++ b/packages/roomkit-react/src/Stats/Stats.tsx @@ -6,6 +6,7 @@ import { RID, selectConnectionQualityByPeerID, selectHMSStats, + selectRoom, simulcastMapping, useHMSStatsStore, useHMSStore, @@ -35,6 +36,7 @@ export function VideoTileStats({ videoTrackID, audioTrackID, peerID, isLocal = f const downlinkScore = useHMSStore(selectConnectionQualityByPeerID(peerID))?.downlinkQuality; const availableOutgoingBitrate = useHMSStatsStore(selectHMSStats.availablePublishBitrate); const qoe = useQoE({ videoTrackID, audioTrackID, isLocal }); + const { websocketUrl = '', initEndpoint = '', enabledFlags = [] } = useHMSStore(selectRoom); // Viewer role - no stats to show if (!(audioTrackStats || videoTrackStats)) { @@ -52,6 +54,16 @@ export function VideoTileStats({ videoTrackID, audioTrackID, peerID, isLocal = f tooltip="Available Outgoing Bitrate" value={formatBytes(availableOutgoingBitrate, 'b/s')} /> + + + + + 0} label="Enabled Flags" value={' '} /> + {enabledFlags.map(flag => ( + + ))} + + {localVideoTrackStats?.map(stat => { if (!stat) { return null; From 2b9eb7585853cc63929c5233931774eeaf2d4393 Mon Sep 17 00:00:00 2001 From: hdz-666 <93115614+hdz-666@users.noreply.github.com> Date: Fri, 4 Oct 2024 12:10:59 +0530 Subject: [PATCH 05/14] fix: add new changes for undefined notif --- .../Prebuilt/components/Notifications/TrackNotifications.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/roomkit-react/src/Prebuilt/components/Notifications/TrackNotifications.tsx b/packages/roomkit-react/src/Prebuilt/components/Notifications/TrackNotifications.tsx index 01beae1716..0e170bc955 100644 --- a/packages/roomkit-react/src/Prebuilt/components/Notifications/TrackNotifications.tsx +++ b/packages/roomkit-react/src/Prebuilt/components/Notifications/TrackNotifications.tsx @@ -12,6 +12,8 @@ export const TrackNotifications = () => { useEffect(() => { if (notification) { console.debug(`[${notification.type}]`, notification); + } else { + return; } }, [notification]); From b56b4c05d06a15db63403f08f037fb7ea018f0f8 Mon Sep 17 00:00:00 2001 From: hdz-666 <93115614+hdz-666@users.noreply.github.com> Date: Fri, 4 Oct 2024 13:50:56 +0530 Subject: [PATCH 06/14] fix: add new changes for ios logging --- packages/react-sdk/src/primitives/HmsRoomProvider.ts | 2 ++ .../Prebuilt/components/Notifications/TrackNotifications.tsx | 2 -- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/react-sdk/src/primitives/HmsRoomProvider.ts b/packages/react-sdk/src/primitives/HmsRoomProvider.ts index 4d5fb0a20d..f77dd4bebb 100644 --- a/packages/react-sdk/src/primitives/HmsRoomProvider.ts +++ b/packages/react-sdk/src/primitives/HmsRoomProvider.ts @@ -206,7 +206,9 @@ export const useHMSNotifications = ( if (!HMSContextConsumer.notifications) { return; } + const unsubscribe = HMSContextConsumer.notifications.onNotification(notification => { + console.log('notification-useEffect', notification); setNotification(notification); }, type); return unsubscribe; diff --git a/packages/roomkit-react/src/Prebuilt/components/Notifications/TrackNotifications.tsx b/packages/roomkit-react/src/Prebuilt/components/Notifications/TrackNotifications.tsx index 0e170bc955..01beae1716 100644 --- a/packages/roomkit-react/src/Prebuilt/components/Notifications/TrackNotifications.tsx +++ b/packages/roomkit-react/src/Prebuilt/components/Notifications/TrackNotifications.tsx @@ -12,8 +12,6 @@ export const TrackNotifications = () => { useEffect(() => { if (notification) { console.debug(`[${notification.type}]`, notification); - } else { - return; } }, [notification]); From bb132e3ca6169f800beabdaadb235e8efc866333 Mon Sep 17 00:00:00 2001 From: hdz-666 <93115614+hdz-666@users.noreply.github.com> Date: Fri, 4 Oct 2024 14:03:35 +0530 Subject: [PATCH 07/14] fix: add new changes for undefined notif --- .../src/hooks/useAwayNotifications.ts | 28 +++++++++++-------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/packages/react-sdk/src/hooks/useAwayNotifications.ts b/packages/react-sdk/src/hooks/useAwayNotifications.ts index cd72f9c3c5..f74c7044c1 100644 --- a/packages/react-sdk/src/hooks/useAwayNotifications.ts +++ b/packages/react-sdk/src/hooks/useAwayNotifications.ts @@ -8,18 +8,24 @@ export const useAwayNotifications = () => { const vanillaStore = useHMSVanillaStore(); const requestPermission = useCallback(async () => { // Headless check for beam - if (navigator.webdriver) { - return; - } - if (!Notification || Notification?.permission === 'granted' || Notification?.permission === 'denied') { - return; - } - const unsubscribe = vanillaStore.subscribe(async role => { - if (role && role !== '__internal_recorder') { - await Notification.requestPermission(); - unsubscribe?.(); + + try { + if (navigator.webdriver) { + return; + } + + if (!Notification || Notification?.permission === 'granted' || Notification?.permission === 'denied') { + return; } - }, selectLocalPeerRoleName); + const unsubscribe = vanillaStore.subscribe(async role => { + if (role && role !== '__internal_recorder') { + await Notification.requestPermission(); + unsubscribe?.(); + } + }, selectLocalPeerRoleName); + } catch (e) { + console.log(e); + } }, [vanillaStore]); const showNotification = useCallback((title: string, options?: NotificationOptions) => { From 65042d48b68e17031f8d9bb223e1a0d63d386721 Mon Sep 17 00:00:00 2001 From: hdz-666 <93115614+hdz-666@users.noreply.github.com> Date: Fri, 4 Oct 2024 14:04:05 +0530 Subject: [PATCH 08/14] fix: add new changes for undefined notif --- packages/react-sdk/src/hooks/useAwayNotifications.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/react-sdk/src/hooks/useAwayNotifications.ts b/packages/react-sdk/src/hooks/useAwayNotifications.ts index f74c7044c1..0fe70c6cf1 100644 --- a/packages/react-sdk/src/hooks/useAwayNotifications.ts +++ b/packages/react-sdk/src/hooks/useAwayNotifications.ts @@ -17,6 +17,7 @@ export const useAwayNotifications = () => { if (!Notification || Notification?.permission === 'granted' || Notification?.permission === 'denied') { return; } + console.log('Requesting Notification Permission', Notification); const unsubscribe = vanillaStore.subscribe(async role => { if (role && role !== '__internal_recorder') { await Notification.requestPermission(); From 6fe8cc7c7ed8c135028260f586c080c6c893fb74 Mon Sep 17 00:00:00 2001 From: hdz-666 <93115614+hdz-666@users.noreply.github.com> Date: Fri, 4 Oct 2024 14:05:37 +0530 Subject: [PATCH 09/14] fix: add new changes for undefined notif --- packages/react-sdk/src/hooks/useAwayNotifications.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react-sdk/src/hooks/useAwayNotifications.ts b/packages/react-sdk/src/hooks/useAwayNotifications.ts index 0fe70c6cf1..49bc911560 100644 --- a/packages/react-sdk/src/hooks/useAwayNotifications.ts +++ b/packages/react-sdk/src/hooks/useAwayNotifications.ts @@ -20,7 +20,7 @@ export const useAwayNotifications = () => { console.log('Requesting Notification Permission', Notification); const unsubscribe = vanillaStore.subscribe(async role => { if (role && role !== '__internal_recorder') { - await Notification.requestPermission(); + await Notification?.requestPermission(); unsubscribe?.(); } }, selectLocalPeerRoleName); From e606efdc4c954a8edb030e797c795e6e124adcb2 Mon Sep 17 00:00:00 2001 From: hdz-666 <93115614+hdz-666@users.noreply.github.com> Date: Fri, 4 Oct 2024 14:13:38 +0530 Subject: [PATCH 10/14] fix: add new logs for verifying ios reference errorr --- packages/react-sdk/src/hooks/useAwayNotifications.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/react-sdk/src/hooks/useAwayNotifications.ts b/packages/react-sdk/src/hooks/useAwayNotifications.ts index 49bc911560..365f23bcb0 100644 --- a/packages/react-sdk/src/hooks/useAwayNotifications.ts +++ b/packages/react-sdk/src/hooks/useAwayNotifications.ts @@ -14,16 +14,23 @@ export const useAwayNotifications = () => { return; } - if (!Notification || Notification?.permission === 'granted' || Notification?.permission === 'denied') { + console.log('Requesting Notification Permission !Notification'); + if (!Notification) { return; } - console.log('Requesting Notification Permission', Notification); + + console.log('Requesting Notification Permission !permission'); + if (Notification?.permission === 'granted' || Notification?.permission === 'denied') { + return; + } + console.log('Requesting Notification Permission unsuscribe', Notification); const unsubscribe = vanillaStore.subscribe(async role => { if (role && role !== '__internal_recorder') { await Notification?.requestPermission(); unsubscribe?.(); } }, selectLocalPeerRoleName); + console.log('Requesting Notification Permission success', Notification); } catch (e) { console.log(e); } From b2aa3ffcb839a5e7a1e58a82c7fc24459c14c456 Mon Sep 17 00:00:00 2001 From: Yogesh Singh Date: Fri, 4 Oct 2024 14:33:26 +0530 Subject: [PATCH 11/14] fix: added more debug logs --- packages/react-sdk/src/hooks/useAwayNotifications.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/react-sdk/src/hooks/useAwayNotifications.ts b/packages/react-sdk/src/hooks/useAwayNotifications.ts index 365f23bcb0..d5b78f21fc 100644 --- a/packages/react-sdk/src/hooks/useAwayNotifications.ts +++ b/packages/react-sdk/src/hooks/useAwayNotifications.ts @@ -14,18 +14,21 @@ export const useAwayNotifications = () => { return; } - console.log('Requesting Notification Permission !Notification'); + console.log('###### Requesting Notification Permission !Notification'); if (!Notification) { + console.log('###### Requesting Notification exiting early'); return; } - console.log('Requesting Notification Permission !permission'); + console.log('###### will Request for Notification'); if (Notification?.permission === 'granted' || Notification?.permission === 'denied') { + console.log('###### Requesting Notification?.permission exiting early'); return; } - console.log('Requesting Notification Permission unsuscribe', Notification); + console.log('###### Requesting Notification Permission unsubscribe', Notification); const unsubscribe = vanillaStore.subscribe(async role => { if (role && role !== '__internal_recorder') { + console.log('###### Requesting Notification now', Notification); await Notification?.requestPermission(); unsubscribe?.(); } From 832cb653c41a19cd21223587092468dd110e81cb Mon Sep 17 00:00:00 2001 From: hdz-666 <93115614+hdz-666@users.noreply.github.com> Date: Fri, 4 Oct 2024 14:48:49 +0530 Subject: [PATCH 12/14] fix: add new fix for browser --- packages/react-sdk/src/hooks/useAwayNotifications.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/react-sdk/src/hooks/useAwayNotifications.ts b/packages/react-sdk/src/hooks/useAwayNotifications.ts index d5b78f21fc..9a719d4025 100644 --- a/packages/react-sdk/src/hooks/useAwayNotifications.ts +++ b/packages/react-sdk/src/hooks/useAwayNotifications.ts @@ -6,6 +6,7 @@ import { useHMSVanillaStore } from '../primitives/HmsRoomProvider'; // Do not prompt if preview is not available. Skips for beam export const useAwayNotifications = () => { const vanillaStore = useHMSVanillaStore(); + // eslint-disable-next-line complexity const requestPermission = useCallback(async () => { // Headless check for beam @@ -13,6 +14,10 @@ export const useAwayNotifications = () => { if (navigator.webdriver) { return; } + if (!('Notification' in window)) { + // Notifications not supported + return; + } console.log('###### Requesting Notification Permission !Notification'); if (!Notification) { From caf868ba240f19d9632e8b374d0bff567581b175 Mon Sep 17 00:00:00 2001 From: hdz-666 <93115614+hdz-666@users.noreply.github.com> Date: Fri, 4 Oct 2024 15:00:47 +0530 Subject: [PATCH 13/14] fix: add new fix for browser --- packages/react-sdk/src/hooks/useAwayNotifications.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/react-sdk/src/hooks/useAwayNotifications.ts b/packages/react-sdk/src/hooks/useAwayNotifications.ts index 9a719d4025..c576e13118 100644 --- a/packages/react-sdk/src/hooks/useAwayNotifications.ts +++ b/packages/react-sdk/src/hooks/useAwayNotifications.ts @@ -14,6 +14,7 @@ export const useAwayNotifications = () => { if (navigator.webdriver) { return; } + console.log('###### Notifications not supported'); if (!('Notification' in window)) { // Notifications not supported return; From a40593153d8e040c41581295c86bbf900fe71ade Mon Sep 17 00:00:00 2001 From: hdz-666 <93115614+hdz-666@users.noreply.github.com> Date: Fri, 4 Oct 2024 15:22:54 +0530 Subject: [PATCH 14/14] fix: remove console.log --- packages/react-sdk/src/hooks/useAwayNotifications.ts | 7 ------- packages/react-sdk/src/primitives/HmsRoomProvider.ts | 1 - 2 files changed, 8 deletions(-) diff --git a/packages/react-sdk/src/hooks/useAwayNotifications.ts b/packages/react-sdk/src/hooks/useAwayNotifications.ts index c576e13118..62a3695322 100644 --- a/packages/react-sdk/src/hooks/useAwayNotifications.ts +++ b/packages/react-sdk/src/hooks/useAwayNotifications.ts @@ -14,32 +14,25 @@ export const useAwayNotifications = () => { if (navigator.webdriver) { return; } - console.log('###### Notifications not supported'); if (!('Notification' in window)) { // Notifications not supported return; } - console.log('###### Requesting Notification Permission !Notification'); if (!Notification) { - console.log('###### Requesting Notification exiting early'); return; } - console.log('###### will Request for Notification'); if (Notification?.permission === 'granted' || Notification?.permission === 'denied') { - console.log('###### Requesting Notification?.permission exiting early'); return; } console.log('###### Requesting Notification Permission unsubscribe', Notification); const unsubscribe = vanillaStore.subscribe(async role => { if (role && role !== '__internal_recorder') { - console.log('###### Requesting Notification now', Notification); await Notification?.requestPermission(); unsubscribe?.(); } }, selectLocalPeerRoleName); - console.log('Requesting Notification Permission success', Notification); } catch (e) { console.log(e); } diff --git a/packages/react-sdk/src/primitives/HmsRoomProvider.ts b/packages/react-sdk/src/primitives/HmsRoomProvider.ts index f77dd4bebb..1050eaf794 100644 --- a/packages/react-sdk/src/primitives/HmsRoomProvider.ts +++ b/packages/react-sdk/src/primitives/HmsRoomProvider.ts @@ -208,7 +208,6 @@ export const useHMSNotifications = ( } const unsubscribe = HMSContextConsumer.notifications.onNotification(notification => { - console.log('notification-useEffect', notification); setNotification(notification); }, type); return unsubscribe;