feat: add loader on video challenges (#38633)
This commit is contained in:
@ -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}
|
||||||
/>
|
/>
|
||||||
|
@ -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);
|
||||||
|
Reference in New Issue
Block a user