@@ -8,6 +8,7 @@ import Form from '../../components/Form/Form';
8
8
import Header from '../../components/Header/Header.tsx' ;
9
9
import ProgressBar from '../../components/ProgressBar.tsx' ;
10
10
import ErrorBoundary from '../../components/ErrorBoundary' ;
11
+ import Loading from '../../components/Loading/Loading' ;
11
12
12
13
import grid from '../../components/Grid/Grid.css' ;
13
14
import { Code } from '../../components/Code/Code' ;
@@ -17,16 +18,18 @@ let iteration = 1;
17
18
let successCounter = 0 ;
18
19
let failureCounter = 0 ;
19
20
20
- const displayQuestion = ( callback ) => {
21
+ const displayQuestion = ( callback , setIsLoaded ) => {
21
22
getRandomDocument ( 'questions' )
22
23
. then ( ( { data } ) => {
23
24
if ( data ) {
25
+ setIsLoaded ( true ) ;
24
26
callback ( data ) ;
25
27
} else {
26
28
console . error ( 'No such document!' ) ;
27
29
}
28
30
} )
29
31
. catch ( ( error ) => {
32
+ setIsLoaded ( true ) ;
30
33
console . error ( 'Error getting document:' , error ) ;
31
34
} ) ;
32
35
} ;
@@ -39,7 +42,7 @@ const upProgressBar = (isCorrect) => {
39
42
}
40
43
} ;
41
44
42
- const addAnswer = ( answer , questionCallback , resultsCallback ) => {
45
+ const addAnswer = ( answer , questionCallback , setIsLoaded , resultsCallback ) => {
43
46
const isCorrectAnswer = functions . httpsCallable ( 'isCorrectAnswer' ) ;
44
47
isCorrectAnswer ( answer ) . then ( ( result ) => {
45
48
upProgressBar ( result . data . correct ) ;
@@ -50,7 +53,7 @@ const addAnswer = (answer, questionCallback, resultsCallback) => {
50
53
total : questionsLength ,
51
54
} ) ;
52
55
} else {
53
- displayQuestion ( questionCallback ) ;
56
+ displayQuestion ( questionCallback , setIsLoaded ) ;
54
57
iteration += 1 ;
55
58
}
56
59
} ) ;
@@ -65,6 +68,7 @@ const ProgressBarWrapper = ({ success = 0, failure = 0, overall }) => {
65
68
} ;
66
69
67
70
const Exam = ( { results } ) => {
71
+ const [ isLoaded , setIsLoaded ] = useState ( false ) ;
68
72
const [ question , setQuestion ] = useState ( {
69
73
id : '' ,
70
74
name : '' ,
@@ -73,7 +77,7 @@ const Exam = ({ results }) => {
73
77
} ) ;
74
78
75
79
useEffect ( ( ) => {
76
- displayQuestion ( setQuestion ) ;
80
+ displayQuestion ( setQuestion , setIsLoaded ) ;
77
81
return function cleanup ( ) {
78
82
iteration = 1 ;
79
83
successCounter = 0 ;
@@ -95,10 +99,13 @@ const Exam = ({ results }) => {
95
99
< ErrorBoundary >
96
100
< Code codeString = { question . value } />
97
101
</ ErrorBoundary >
102
+ { ! isLoaded && < Loading /> }
98
103
</ section >
99
104
< section className = { grid . container } >
100
105
< Form
101
- userAnswer = { ( answer ) => addAnswer ( answer , setQuestion , results ) }
106
+ userAnswer = { ( answer ) =>
107
+ addAnswer ( answer , setQuestion , setIsLoaded , results )
108
+ }
102
109
/>
103
110
</ section >
104
111
</ >
0 commit comments