feat: add loader on video challenges (#38633)

This commit is contained in:
Tom
2020-04-24 13:50:58 -05:00
committed by Mrugesh Mohapatra
parent 286ba7689b
commit ef79ddd0de
2 changed files with 42 additions and 3 deletions

View File

@ -18,6 +18,7 @@ import ChallengeDescription from '../components/Challenge-Description';
import Spacer from '../../../components/helpers/Spacer'; import Spacer from '../../../components/helpers/Spacer';
import CompletionModal from '../components/CompletionModal'; import CompletionModal from '../components/CompletionModal';
import Hotkeys from '../components/Hotkeys'; import Hotkeys from '../components/Hotkeys';
import Loader from '../../../components/helpers/Loader';
import { import {
isChallengeCompletedSelector, isChallengeCompletedSelector,
challengeMounted, challengeMounted,
@ -72,7 +73,8 @@ export class Project extends Component {
downloadURL: null, downloadURL: null,
selectedOption: 0, selectedOption: 0,
answer: 1, answer: 1,
showWrong: false showWrong: false,
videoIsLoaded: false
}; };
this.handleSubmit = this.handleSubmit.bind(this); this.handleSubmit = this.handleSubmit.bind(this);
@ -136,6 +138,12 @@ export class Project extends Component {
}); });
}; };
videoIsReady = () => {
this.setState({
videoIsLoaded: true
});
};
render() { render() {
const { const {
data: { data: {
@ -171,9 +179,19 @@ export class Project extends Component {
<ChallengeTitle isCompleted={isChallengeCompleted}> <ChallengeTitle isCompleted={isChallengeCompleted}>
{blockNameTitle} {blockNameTitle}
</ChallengeTitle> </ChallengeTitle>
<div style={{ textAlign: 'center' }}> <div className='video-wrapper'>
{!this.state.videoIsLoaded ? (
<div className='video-placeholder-loader'>
<Loader />
</div>
) : null}
<YouTube <YouTube
onEnd={openCompletionModal} className={
this.state.videoIsLoaded
? 'display-youtube-video'
: 'hide-youtube-video'
}
onReady={this.videoIsReady}
opts={{ rel: 0 }} opts={{ rel: 0 }}
videoId={videoId} videoId={videoId}
/> />

View File

@ -1,3 +1,24 @@
.video-wrapper {
display: flex;
flex-direction: column;
justify-content: space-evenly;
align-items: center;
}
.video-placeholder-loader {
min-height: 360px;
display: flex;
align-items: center;
}
.display-youtube-video {
display: block;
}
.hide-youtube-video {
display: none;
}
.video-quiz-options { .video-quiz-options {
padding: 1px 16px; padding: 1px 16px;
background-color: var(--tertiary-background); background-color: var(--tertiary-background);