1
1
import { useEffect , useState } from 'react'
2
2
import moment from 'moment'
3
3
import { BASE_PATH } from './apiConfig'
4
+
4
5
export interface Agency {
5
6
date : string // example - "2019-07-01"
6
7
operator_ref : number // example - 25,
@@ -9,17 +10,32 @@ export interface Agency {
9
10
10
11
let agencyList : Agency [ ]
11
12
13
+ const tryDates = [
14
+ moment ( ) . subtract ( 1 , 'day' ) . format ( 'YYYY-MM-DD' ) ,
15
+ moment ( ) . subtract ( 8 , 'day' ) . format ( 'YYYY-MM-DD' ) ,
16
+ '2025-05-18' ,
17
+ ]
18
+
12
19
/**
13
20
* Fetch agency data from MOT api
14
21
* @returns Agency data array, might contain DUPLICATE agencies with different `date` values
15
22
*/
16
23
export default async function getAgencyList ( ) : Promise < Agency [ ] > {
17
24
if ( ! agencyList ) {
18
- const yesterday = moment ( ) . subtract ( 1 , 'day' ) . format ( 'YYYY-MM-DD' )
19
- const response = await fetch ( `${ BASE_PATH } /gtfs_agencies/list?date_from=${ yesterday } ` )
20
- const data = ( await response . json ( ) ) as Awaited < Agency [ ] >
21
- agencyList = data . filter ( Boolean ) // filter empty entries
25
+ let data : Agency [ ] = [ ]
26
+ for ( const date of tryDates ) {
27
+ try {
28
+ const response = await fetch ( `${ BASE_PATH } /gtfs_agencies/list?date_from=${ date } ` )
29
+ if ( ! response . ok ) continue
30
+ data = ( await response . json ( ) ) as Agency [ ]
31
+ if ( data . length > 0 ) break
32
+ } catch ( err ) {
33
+ console . error ( err )
34
+ }
35
+ }
36
+ agencyList = data . filter ( Boolean )
22
37
}
38
+
23
39
return agencyList
24
40
}
25
41
0 commit comments