From f3b4494097fee016d89cce1b029e36f67452057c Mon Sep 17 00:00:00 2001 From: sylenien Date: Mon, 10 Oct 2022 14:57:29 +0200 Subject: [PATCH] change(tracker/player): change feeds updating --- .../managers/AssistManager.ts | 44 +++---------------- tracker/tracker-assist/src/CallWindow.ts | 2 +- tracker/tracker-assist/src/util.ts | 32 -------------- 3 files changed, 6 insertions(+), 72 deletions(-) delete mode 100644 tracker/tracker-assist/src/util.ts diff --git a/frontend/app/player/MessageDistributor/managers/AssistManager.ts b/frontend/app/player/MessageDistributor/managers/AssistManager.ts index 80dfa9af3..3d3d4236c 100644 --- a/frontend/app/player/MessageDistributor/managers/AssistManager.ts +++ b/frontend/app/player/MessageDistributor/managers/AssistManager.ts @@ -72,43 +72,8 @@ export const INITIAL_STATE: State = { const MAX_RECONNECTION_COUNT = 4; -let handlers = Symbol('handlers'); - -interface VideoFeeds { - [key: string]: boolean -} - -type ProxyResult = T & { - observe: (handler: (args: any) => any) => void - [key: typeof handlers]: Function[] -} - -function makeObservable(target: T): ProxyResult { - // @ts-ignore - target[handlers] = []; - - // @ts-ignore - target.observe = function(handler) { - this[handlers].push(handler); - }; - - // @ts-ignore - return new Proxy(target, { - set(target, property, value) { - // @ts-ignore - let success = Reflect.set(...arguments); - if (success) { - // @ts-ignore - target[handlers].forEach(handler => handler(property, value)); - } - return success; - } - }); -} - -export const videoFeeds = makeObservable({}) - export default class AssistManager { + private videoStreams: Record = {} // TODO: Session type constructor(private session: any, private md: MessageDistributor, private config: any) {} @@ -240,7 +205,7 @@ export default class AssistManager { } }) socket.on('videofeed', ({ streamId, enabled }) => { - videoFeeds[streamId] = enabled + this.videoStreams[streamId].enabled = enabled }) socket.on('SESSION_DISCONNECTED', e => { waitingForMessages = true @@ -405,7 +370,7 @@ export default class AssistManager { call.on('stream', stream => { this.callArgs && this.callArgs.onStream(stream) stream.getVideoTracks().forEach(track => { - videoFeeds[track.id] = track.enabled + this.videoStreams[track.id] = track }) }); // call.peerConnection.addEventListener("track", e => console.log('newtrack',e.track)) @@ -537,8 +502,9 @@ export default class AssistManager { call.on('stream', stream => { getState().calling !== CallingState.OnCall && update({ calling: CallingState.OnCall }) + stream.getVideoTracks().forEach(track => { - videoFeeds[track.id] = track.enabled + this.videoStreams[track.id] = track }) this.callArgs && this.callArgs.onStream(stream) }); diff --git a/tracker/tracker-assist/src/CallWindow.ts b/tracker/tracker-assist/src/CallWindow.ts index bd7d51917..50a782e8d 100644 --- a/tracker/tracker-assist/src/CallWindow.ts +++ b/tracker/tracker-assist/src/CallWindow.ts @@ -147,7 +147,7 @@ export default class CallWindow { this.checkRemoteVideoInterval = setInterval(() => { const settings = this.remoteVideo?.getSettings() const isDummyVideoTrack = - !!settings && (settings.width === 2 || settings.frameRate === 0) + !!settings && !this.remoteVideo.enabled && (settings.width === 2 || settings.frameRate === 0) const shouldBeEnabled = !isDummyVideoTrack if (enabled !== shouldBeEnabled) { this.toggleRemoteVideoUI((enabled = shouldBeEnabled)) diff --git a/tracker/tracker-assist/src/util.ts b/tracker/tracker-assist/src/util.ts deleted file mode 100644 index bc2af9731..000000000 --- a/tracker/tracker-assist/src/util.ts +++ /dev/null @@ -1,32 +0,0 @@ -/* eslint-disable prefer-rest-params */ -const handlers = Symbol('handlers') - -export type ProxyResult> = T & { - observe: (handler: (key: string, value: any) => any) => void - // @ts-ignore - [key: typeof handlers]: (() => void)[] -} - -export function makeObservable>(target: T): ProxyResult { - // @ts-ignore - target[handlers] = [] - - // @ts-ignore - target.observe = function (handler) { - // @ts-ignore - this[handlers].push(handler) - } - - // @ts-ignore - return new Proxy(target, { - set(target, property, value) { - // @ts-ignore - const success = Reflect.set(...arguments) - if (success) { - // @ts-ignore - target[handlers].forEach((handler: (property: string, value: any) => void) => handler(property, value)) - } - return success - }, - }) -}