const STATE = { sleeping: 0, video: 1, audio: 2, thankYou: 3, }; class StateManager { constructor() { this._state = STATE.sleeping; this._cameraPage = new CameraPage(); this._sleepingPage = new SleepingPage(); this._audioPage = new AudioPage(); this._thankYouPage = new ThankYouPage(); this.wsClient = new WebsocketClient( (effects) => { this.setState(STATE.video); this._cameraPage.setEffects(effects) }, (state) => this.setState(state) ); this._sleepingPage.enabled = true; this._cameraPage.enabled = false; this._audioPage.enabled = false; this._thankYouPage.enabled = false; } setState(newState) { console.log({current:this._state,new:newState}) if(this._state == STATE.sleeping && newState == STATE.video) { this._cameraPage.enabled = true; this._sleepingPage.enabled = false; this._state = newState; }else if(this._state == STATE.video && newState == STATE.audio) { this._cameraPage.enabled = false; this._audioPage.enabled = true; this._state = newState; }else if(this._state == STATE.audio && newState == STATE.thankYou) { this._audioPage.enabled = false; this._thankYouPage.enabled = true; this._state = newState; }else if(this._state == STATE.thankYou && newState == STATE.sleeping) { this._thankYouPage.enabled = false; this._sleepingPage.enabled = true; this._state = newState; } } }