1
1
import React , { useEffect , useState } from 'react' ;
2
2
import { useAuth0 } from '@auth0/auth0-react' ;
3
- import { getRecommendations } from '../api/flights' ;
3
+ import { getRecommendations , getFlightDetails } from '../api/flights' ;
4
4
import {
5
5
Table , TableBody , TableCell , TableContainer , TableHead , TableRow , Paper ,
6
6
TablePagination , Box
@@ -11,32 +11,74 @@ import { es } from 'date-fns/locale';
11
11
12
12
function Recommendations ( ) {
13
13
const { isAuthenticated, getAccessTokenSilently} = useAuth0 ( ) ;
14
- const [ flights , setFlights ] = useState ( [ ] ) ;
14
+ const [ flights , setFlights ] = useState ( null ) ;
15
+ const [ date_update , setUpdate ] = useState ( ) ;
16
+ const [ status , setStatus ] = useState ( null ) ;
15
17
//const [page, setPage] = useState(0);
16
18
const navigate = useNavigate ( ) ;
17
19
18
20
useEffect ( ( ) => {
19
21
const fetchFlights = async ( ) => {
20
- if ( ! isAuthenticated ) return ;
21
- try {
22
- const token = await getAccessTokenSilently ( ) ;
23
- const flightsData = await getRecommendations ( token ) ;
24
- setFlights ( flightsData ) ;
25
- } catch ( error ) {
26
- console . error ( "Error fetching flights:" , error ) ;
22
+ if ( ! isAuthenticated ) return ;
23
+
24
+ try {
25
+ const token = await getAccessTokenSilently ( ) ;
26
+ const flightsData = await getRecommendations ( token ) ;
27
+ console . log ( "get recommendations:" , flightsData ) ;
28
+
29
+ const id_1 = flightsData . flights . flight1 ;
30
+ const id_2 = flightsData . flights . flight2 ;
31
+ const id_3 = flightsData . flights . flight3 ;
32
+
33
+ if ( ! id_1 || ! id_2 || ! id_3 ) {
34
+ setFlights ( null ) ;
35
+ } else {
36
+ const [ flight1Data , flight2Data , flight3Data ] = await Promise . all ( [
37
+ getFlightDetails ( token , id_1 ) ,
38
+ getFlightDetails ( token , id_2 ) ,
39
+ getFlightDetails ( token , id_3 )
40
+ ] ) ;
41
+ setFlights ( [ flight1Data . flight , flight2Data . flight , flight3Data . flight ] ) ;
42
+ setUpdate ( flightsData . flights . updatedAt ) ;
27
43
}
44
+ } catch ( error ) {
45
+ console . error ( "Error fetching recommendations:" , error ) ;
46
+ }
28
47
} ;
29
-
48
+
30
49
fetchFlights ( ) ;
31
50
} , [ getAccessTokenSilently , isAuthenticated ] ) ;
32
51
52
+ useEffect ( ( ) => {
53
+ const fetchHearbeat = async ( ) => {
54
+ if ( ! isAuthenticated ) return ;
55
+ try {
56
+ const response = await fetch ( 'https://worker.matiasoliva.me/heartbeat' ) ;
57
+ const data = await response . json ( ) ;
58
+ setStatus ( data . status ) ;
59
+ } catch ( error ) {
60
+ console . error ( "Error fetching status:" , error ) ;
61
+ }
62
+ } ;
63
+
64
+ fetchHearbeat ( ) ;
65
+ const intervalId = setInterval ( fetchHearbeat , 5000 ) ; // Adjust the interval as needed
66
+
67
+ return ( ) => clearInterval ( intervalId ) ;
68
+ } , [ isAuthenticated ] ) ;
69
+
33
70
/*const handleChangePage = (event, newPage) => {
34
71
setPage(newPage);
35
72
};*/
36
73
37
74
if ( ! isAuthenticated ) return < div > Please log in to view this content.</ div > ;
38
75
39
76
return (
77
+ < div >
78
+ < p > Status: { status ? 'Workers disponibles' : 'Workers no disponibles' } </ p >
79
+ { flights ? (
80
+ < >
81
+ < p > Última actualización: { format ( new Date ( date_update ) , "d 'de' MMMM yyyy 'a las' HH:mm" , { locale : es } ) } </ p >
40
82
< Box sx = { { flexGrow : 1 , margin : 3 } } >
41
83
< TableContainer component = { Paper } >
42
84
< Table >
@@ -83,7 +125,10 @@ function Recommendations() {
83
125
rowsPerPageOptions={[]}
84
126
/>*/ }
85
127
</ TableContainer >
86
- </ Box >
128
+ </ Box > </ > ) : (
129
+ < p > No hay recomendaciones disponibles.</ p >
130
+ ) }
131
+ </ div >
87
132
) ;
88
133
}
89
134
0 commit comments