From 3b43691945027328fff2a7d2e62a51062ee6a9fd Mon Sep 17 00:00:00 2001 From: Alex Kaminskii Date: Mon, 26 Dec 2022 22:22:31 +0100 Subject: [PATCH] refactor(player): separate more live functions to WebLivePlayer --- frontend/app/player/create.ts | 14 +++++++++----- frontend/app/player/web/WebLivePlayer.ts | 19 ++++++++++++++++++- frontend/app/player/web/WebPlayer.ts | 19 +------------------ 3 files changed, 28 insertions(+), 24 deletions(-) diff --git a/frontend/app/player/create.ts b/frontend/app/player/create.ts index 39114d7cb..a07f3910d 100644 --- a/frontend/app/player/create.ts +++ b/frontend/app/player/create.ts @@ -4,12 +4,16 @@ import type { Store } from './common/types' import WebPlayer from './web/WebPlayer' import WebLivePlayer from './web/WebLivePlayer' -type WebState = typeof WebPlayer.INITIAL_STATE //? +type WebState = typeof WebPlayer.INITIAL_STATE type WebPlayerStore = Store export type IWebPlayer = WebPlayer -export type IWebLivePlayer = WebLivePlayer export type IWebPlayerStore = WebPlayerStore +type WebLiveState = typeof WebLivePlayer.INITIAL_STATE +type WebLivePlayerStore = Store +export type IWebLivePlayer = WebLivePlayer +export type IWebLivePlayerStore = WebLivePlayerStore + export function createWebPlayer(session: Record, wrapStore?: (s:IWebPlayerStore) => IWebPlayerStore): [IWebPlayer, IWebPlayerStore] { let store: WebPlayerStore = new SimpleStore({ ...WebPlayer.INITIAL_STATE, @@ -23,9 +27,9 @@ export function createWebPlayer(session: Record, wrapStore?: (s:IWe } -export function createLiveWebPlayer(session: Record, config: RTCIceServer[], wrapStore?: (s:IWebPlayerStore) => IWebPlayerStore): [IWebLivePlayer, IWebPlayerStore] { - let store: WebPlayerStore = new SimpleStore({ - ...WebPlayer.INITIAL_STATE, +export function createLiveWebPlayer(session: Record, config: RTCIceServer[], wrapStore?: (s:IWebLivePlayerStore) => IWebLivePlayerStore): [IWebLivePlayer, IWebLivePlayerStore] { + let store: WebLivePlayerStore = new SimpleStore({ + ...WebLivePlayer.INITIAL_STATE, }) if (wrapStore) { store = wrapStore(store) diff --git a/frontend/app/player/web/WebLivePlayer.ts b/frontend/app/player/web/WebLivePlayer.ts index 8cd41ab15..6ac2665a1 100644 --- a/frontend/app/player/web/WebLivePlayer.ts +++ b/frontend/app/player/web/WebLivePlayer.ts @@ -5,11 +5,28 @@ import AssistManager from './assist/AssistManager' export default class WebLivePlayer extends WebPlayer { + static readonly INITIAL_STATE = { + ...WebPlayer.INITIAL_STATE, + ...AssistManager.INITIAL_STATE, + liveTimeTravel: false, + } + assistManager: AssistManager // public so far - constructor(wpState: Store, session:any, config: RTCIceServer[]) { + constructor(wpState: Store, session:any, config: RTCIceServer[]) { super(wpState, session, true) this.assistManager = new AssistManager(session, this.messageManager, this.screen, config, wpState) this.assistManager.connect(session.agentToken) } + + // TODO separate message receivers + toggleTimetravel = async () => { + if (!this.wpState.get().liveTimeTravel) { + await this.messageManager.reloadWithUnprocessedFile(() => + this.wpState.update({ + liveTimeTravel: true, + }) + ) + } + } } \ No newline at end of file diff --git a/frontend/app/player/web/WebPlayer.ts b/frontend/app/player/web/WebPlayer.ts index adefc65be..83b82d0b6 100644 --- a/frontend/app/player/web/WebPlayer.ts +++ b/frontend/app/player/web/WebPlayer.ts @@ -6,7 +6,6 @@ import Player, { State as PlayerState } from '../player/Player' import MessageManager from './MessageManager' import InspectorController from './addons/InspectorController' import TargetMarker from './addons/TargetMarker' -import AssistManager from './assist/AssistManager' import Screen from './Screen/Screen' // export type State = typeof WebPlayer.INITIAL_STATE @@ -15,12 +14,9 @@ export default class WebPlayer extends Player { static readonly INITIAL_STATE = { ...Player.INITIAL_STATE, ...TargetMarker.INITIAL_STATE, - ...MessageManager.INITIAL_STATE, - ...AssistManager.INITIAL_STATE, inspectorMode: false, - liveTimeTravel: false, } private readonly inspectorController: InspectorController @@ -29,7 +25,7 @@ export default class WebPlayer extends Player { private targetMarker: TargetMarker - constructor(private wpState: Store, session: any, live: boolean) { + constructor(protected wpState: Store, session: any, live: boolean) { let initialLists = live ? {} : { event: session.events.toJSON(), stack: session.stackEvents.toJSON(), @@ -110,25 +106,12 @@ export default class WebPlayer extends Player { this.targetMarker.markTargets(...args) } - - // TODO separate message receivers - toggleTimetravel = async () => { - if (!this.wpState.get().liveTimeTravel) { - await this.messageManager.reloadWithUnprocessedFile(() => - this.wpState.update({ - liveTimeTravel: true, - }) - ) - } - } - toggleUserName = (name?: string) => { this.screen.cursor.showTag(name) } clean = () => { super.clean() - this.assistManager.clean() window.removeEventListener('resize', this.scale) } }