@@ -2,42 +2,31 @@ import React, { useEffect, useState } from 'react';
2
2
3
3
import Tasks from './components/Tasks/Tasks' ;
4
4
import NewTask from './components/NewTask/NewTask' ;
5
+ import useHttp from './hooks/useHttp' ;
5
6
6
7
function App ( ) {
7
- const [ isLoading , setIsLoading ] = useState ( false ) ;
8
- const [ error , setError ] = useState ( null ) ;
9
8
const [ tasks , setTasks ] = useState ( [ ] ) ;
10
9
11
- const fetchTasks = async ( taskText ) => {
12
- setIsLoading ( true ) ;
13
- setError ( null ) ;
14
- try {
15
- const response = await fetch (
16
- 'https://react-http-89353-default-rtdb.europe-west1.firebasedatabase.app/tasks.json'
17
- ) ;
18
-
19
- if ( ! response . ok ) {
20
- throw new Error ( 'Request failed!' ) ;
21
- }
22
-
23
- const data = await response . json ( ) ;
10
+ const { isLoading, error, sendRequest : fetchTasks } = useHttp ( ) ;
24
11
12
+ useEffect ( ( ) => {
13
+ const transformTasks = ( taskObj ) => {
25
14
const loadedTasks = [ ] ;
26
15
27
- for ( const taskKey in data ) {
28
- loadedTasks . push ( { id : taskKey , text : data [ taskKey ] . text } ) ;
16
+ for ( const taskKey in taskObj ) {
17
+ loadedTasks . push ( { id : taskKey , text : taskObj [ taskKey ] . text } ) ;
29
18
}
30
19
31
20
setTasks ( loadedTasks ) ;
32
- } catch ( err ) {
33
- setError ( err . message || 'Something went wrong!' ) ;
34
- }
35
- setIsLoading ( false ) ;
36
- } ;
37
-
38
- useEffect ( ( ) => {
39
- fetchTasks ( ) ;
40
- } , [ ] ) ;
21
+ } ;
22
+
23
+ fetchTasks (
24
+ {
25
+ url : 'https://react-http-89353-default-rtdb.europe-west1.firebasedatabase.app/tasks.json' ,
26
+ } ,
27
+ transformTasks
28
+ ) ;
29
+ } , [ fetchTasks ] ) ;
41
30
42
31
const taskAddHandler = ( task ) => {
43
32
setTasks ( ( prevTasks ) => prevTasks . concat ( task ) ) ;
0 commit comments