From 6af166f68f8f9d5b04d76a4040710510e614a739 Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Tue, 23 Jun 2020 05:32:05 -0400 Subject: [PATCH] better modal switching behavior --- vocodes/src/App.tsx | 27 ++++++++++++++++++---- vocodes/src/modes/speak/SpeakComponent.tsx | 14 ++++------- 2 files changed, 28 insertions(+), 13 deletions(-) diff --git a/vocodes/src/App.tsx b/vocodes/src/App.tsx index 2a3381d894..50026da5e9 100644 --- a/vocodes/src/App.tsx +++ b/vocodes/src/App.tsx @@ -10,6 +10,7 @@ import { TopNav } from './navigation/TopNav'; import { UsageComponent } from './modes/usage/UsageComponent'; import { Speaker, SPEAKERS } from './Speakers'; import { ExtrasMode } from './modes/speak/extras/ExtrasComponent'; +import { Spectrogram } from './modes/speak/extras/Spectrogram'; interface Props {} @@ -17,6 +18,7 @@ interface State { mode: Mode, extrasMode: ExtrasMode, speaker: Speaker, + currentSpectrogram?: Spectrogram, } class App extends React.Component { @@ -47,12 +49,27 @@ class App extends React.Component { } setSpeakerBySlug = (speakerSlug: string) : void => { - console.log('speaker', speakerSlug); + let selectedSpeaker = undefined; + SPEAKERS.forEach(speaker => { if (speaker.slug === speakerSlug) { - this.setState({ speaker: speaker }); + selectedSpeaker = speaker; } }) + + if (selectedSpeaker !== undefined) { + this.setState({ + speaker: selectedSpeaker, + extrasMode: ExtrasMode.SPEAKER_INFO, + }); + } + } + + updateSpectrogram = (spectrogram: Spectrogram) => { + this.setState({ + currentSpectrogram: spectrogram, + extrasMode: ExtrasMode.SPECTROGRAM, + }); } public render() { @@ -60,9 +77,11 @@ class App extends React.Component { switch (this.state.mode) { case Mode.SPEAK_MODE: component = ; break; diff --git a/vocodes/src/modes/speak/SpeakComponent.tsx b/vocodes/src/modes/speak/SpeakComponent.tsx index 1d289e96e2..743f2a7ca9 100644 --- a/vocodes/src/modes/speak/SpeakComponent.tsx +++ b/vocodes/src/modes/speak/SpeakComponent.tsx @@ -16,9 +16,11 @@ enum StatusState { } interface Props { - currentSpeaker: Speaker, extrasMode: ExtrasMode, + currentSpeaker: Speaker, + currentSpectrogram?: Spectrogram, changeSpeakerCallback: (slug: string) => void, + changeSpectrogramCallback: (spectrogram: Spectrogram) => void, changeExtrasModeCallback: (extrasMode: ExtrasMode) => void, } @@ -26,7 +28,6 @@ interface State { statusState: StatusState; statusMessage: string, isTalking: boolean, - currentSpectrogram?: Spectrogram, } class SpeakComponent extends React.Component { @@ -37,7 +38,6 @@ class SpeakComponent extends React.Component { statusState: StatusState.NONE, statusMessage: '', isTalking: false, - currentSpectrogram: undefined, }; } @@ -111,10 +111,6 @@ class SpeakComponent extends React.Component { this.setState({ isTalking: false }); } - updateSpectrogram = (spectrogram: Spectrogram) => { - this.setState({ currentSpectrogram: spectrogram }); - } - public render() { return (
@@ -127,7 +123,7 @@ class SpeakComponent extends React.Component {
@@ -145,7 +141,7 @@ class SpeakComponent extends React.Component { onSpeakErrorCallback={this.onSpeakError} onPlayCallback={this.onPlay} onStopCallback={this.onStop} - updateSpectrogramCallback={this.updateSpectrogram} + updateSpectrogramCallback={this.props.changeSpectrogramCallback} /> );