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