@@ -91,7 +91,7 @@ const readMeta = async (dir, md) => {
91
91
} ;
92
92
93
93
const listMeta = async ( dir , { md, meta } ) => {
94
- md = md || meta . slice ( ) || [ ] ;
94
+ md = md || meta ? .slice ( ) || [ ] ;
95
95
versions = { } ;
96
96
md . forEach ( ( o , i ) => {
97
97
if ( ! versions [ o . prefix ] ) {
@@ -259,16 +259,11 @@ let keys = {};
259
259
let tree = { } ;
260
260
let status = "LOADING" ;
261
261
262
- const loadIndex = async ( ) => {
263
- // TODO: support cancelling this indexing if called again before finished
264
- // Load dataset IDs first to get an index ready quickly
262
+ const sleep = ( ms ) => new Promise ( ( resolve ) => setTimeout ( resolve , ms ) ) ;
263
+
264
+ const loadFullIndex = async ( ) => {
265
265
try {
266
- let newMeta = await listMeta ( dataDirectory , { meta } ) ;
267
- let newIndex = generateIndex ( newMeta ) ;
268
- let newKeys = Object . keys ( newIndex . values ) ;
269
- meta = newMeta ;
270
- index = newIndex ;
271
- keys = newKeys ;
266
+ await sleep ( 10000 ) ;
272
267
// Load metadata into full index
273
268
status = "INDEXING" ;
274
269
newMeta = await readMeta ( dataDirectory ) ;
@@ -288,6 +283,22 @@ const loadIndex = async () => {
288
283
}
289
284
} ;
290
285
286
+ const loadIndex = async ( ) => {
287
+ try {
288
+ let newMeta = await listMeta ( dataDirectory , { } ) ;
289
+ let newIndex = generateIndex ( newMeta ) ;
290
+ let newKeys = Object . keys ( newIndex . values ) ;
291
+ meta = newMeta ;
292
+ index = newIndex ;
293
+ keys = newKeys ;
294
+ status = "INDEXING" ;
295
+ loadFullIndex ( ) ;
296
+ } catch ( message ) {
297
+ logError ( { message } ) ;
298
+ status = "NOT OK" ;
299
+ }
300
+ } ;
301
+
291
302
const autocomplete = ( term ) => {
292
303
query = term . toUpperCase ( ) ;
293
304
let results = [ ] ;
0 commit comments