refactor(player): separate more live functions to WebLivePlayer
This commit is contained in:
parent
33a6f854a2
commit
3b43691945
3 changed files with 28 additions and 24 deletions
|
|
@ -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<WebState>
|
||||
export type IWebPlayer = WebPlayer
|
||||
export type IWebLivePlayer = WebLivePlayer
|
||||
export type IWebPlayerStore = WebPlayerStore
|
||||
|
||||
type WebLiveState = typeof WebLivePlayer.INITIAL_STATE
|
||||
type WebLivePlayerStore = Store<WebLiveState>
|
||||
export type IWebLivePlayer = WebLivePlayer
|
||||
export type IWebLivePlayerStore = WebLivePlayerStore
|
||||
|
||||
export function createWebPlayer(session: Record<string, any>, wrapStore?: (s:IWebPlayerStore) => IWebPlayerStore): [IWebPlayer, IWebPlayerStore] {
|
||||
let store: WebPlayerStore = new SimpleStore<WebState>({
|
||||
...WebPlayer.INITIAL_STATE,
|
||||
|
|
@ -23,9 +27,9 @@ export function createWebPlayer(session: Record<string, any>, wrapStore?: (s:IWe
|
|||
}
|
||||
|
||||
|
||||
export function createLiveWebPlayer(session: Record<string, any>, config: RTCIceServer[], wrapStore?: (s:IWebPlayerStore) => IWebPlayerStore): [IWebLivePlayer, IWebPlayerStore] {
|
||||
let store: WebPlayerStore = new SimpleStore<WebState>({
|
||||
...WebPlayer.INITIAL_STATE,
|
||||
export function createLiveWebPlayer(session: Record<string, any>, config: RTCIceServer[], wrapStore?: (s:IWebLivePlayerStore) => IWebLivePlayerStore): [IWebLivePlayer, IWebLivePlayerStore] {
|
||||
let store: WebLivePlayerStore = new SimpleStore<WebLiveState>({
|
||||
...WebLivePlayer.INITIAL_STATE,
|
||||
})
|
||||
if (wrapStore) {
|
||||
store = wrapStore(store)
|
||||
|
|
|
|||
|
|
@ -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<typeof WebPlayer.INITIAL_STATE>, session:any, config: RTCIceServer[]) {
|
||||
constructor(wpState: Store<typeof WebLivePlayer.INITIAL_STATE>, 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,
|
||||
})
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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<typeof WebPlayer.INITIAL_STATE>, session: any, live: boolean) {
|
||||
constructor(protected wpState: Store<typeof WebPlayer.INITIAL_STATE>, 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)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue