1
- import React , { useState , useEffect } from 'react'
1
+ import React , { useState , useEffect } from 'react'
2
2
import { QuestionForm } from './QuestionForm'
3
- import { Question } from './Question'
3
+ import { Question } from './Question'
4
4
import './QuestionList.css'
5
5
6
+ import QuestionModel from '../../DataModel/Question'
7
+ import { setupQuestionDatabase , retrieveQuestionDatabase , updateLocalQuestionDatabase } from "../../Utility/localStorage"
8
+
6
9
export const Questions = ( ) => {
10
+ // Initializing Database
11
+ setupQuestionDatabase ( ) ;
12
+
13
+ const [ database , setDatabase ] = useState ( retrieveQuestionDatabase ( ) ) ;
7
14
const [ qId , setQId ] = useState ( 0 ) ;
8
15
const [ isAddQ , setAddQ ] = useState ( false ) ;
9
16
const [ qs , setQs ] = useState ( [ ] )
@@ -12,9 +19,24 @@ export const Questions = () => {
12
19
}
13
20
14
21
const addQuestion = ( qTitle , qDifficulty , qTopic , qDescription ) => {
15
- setQs ( [ ...qs , { id : qId , title : qTitle , difficulty : qDifficulty ,
16
- topic : qTopic , description : qDescription } ] ) ;
22
+ // Add in Database and Upload into Storage
23
+ let newQuestion = new QuestionModel ( qId , qTitle , qDescription , qDifficulty , qTopic ) ;
24
+ database . addQuestion ( newQuestion ) ;
25
+ updateLocalQuestionDatabase ( database ) ;
26
+
27
+ // Update States
28
+ setQs ( Array . from ( database . database ) ) ;
29
+ setQId ( Array . from ( database . database ) . length ) ;
30
+
31
+ // setQs([...qs, {id: qId, title: qTitle, difficulty: qDifficulty,
32
+ // topic: qTopic, description: qDescription }]);
17
33
}
34
+
35
+ // To load data on mount
36
+ useEffect ( ( ) => {
37
+ setQs ( Array . from ( database . database ) ) ;
38
+ setQId ( Array . from ( database . database ) . length ) ;
39
+ } , [ ] )
18
40
19
41
useEffect ( ( ) => console . log ( qs ) , [ qs ] ) ;
20
42
@@ -23,19 +45,16 @@ export const Questions = () => {
23
45
< div className = "q-wrapper" >
24
46
< div className = "accordion" >
25
47
{ qs . map ( ( q , i ) => (
26
- < Question question = { q } key = { q . id } i = { i } />
48
+ < Question key = { q [ 0 ] } question = { q [ 1 ] } i = { i } />
27
49
) ) }
28
50
</ div >
29
51
30
- { isAddQ === false ? < div > </ div > : < QuestionForm qId = { qId } addQuestion = { addQuestion }
31
- setAddQ = { setAddQ } /> }
52
+ { isAddQ === false ? < div > </ div > :
53
+ < QuestionForm qId = { qId } addQuestion = { addQuestion } setAddQ = { setAddQ } /> }
32
54
< div className = "add-q-btn" onClick = { ( ) => {
33
55
setQId ( qId + 1 ) ;
34
56
setAddQ ( true ) ;
35
57
} } > Add question</ div >
36
58
</ div >
37
-
38
-
39
-
40
59
)
41
60
}
0 commit comments