diff options
Diffstat (limited to 'ext/bg/js/util.js')
| -rw-r--r-- | ext/bg/js/util.js | 24 | 
1 files changed, 24 insertions, 0 deletions
diff --git a/ext/bg/js/util.js b/ext/bg/js/util.js index 4e0cc671..888bcb33 100644 --- a/ext/bg/js/util.js +++ b/ext/bg/js/util.js @@ -116,3 +116,27 @@ function applyTagMeta(tag, meta) {  function splitField(field) {      return field.length === 0 ? [] : field.split(' ');  } + +function importJsonDb(indexUrl, entitiesLoaded, entriesLoaded) { +    const indexDir = indexUrl.slice(0, indexUrl.lastIndexOf('/')); +    return loadJson(indexUrl).then(index => { +        if (entitiesLoaded !== null) { +            return entitiesLoaded(index.entities, index.banks).then(() => index); +        } + +        return index; +    }).then(index => { +        const loaders = []; +        for (let i = 1; i <= index.banks; ++i) { +            const bankUrl = `${indexDir}/bank_${i}.json`; +            loaders.push(() => loadJson(bankUrl).then(entries => entriesLoaded(entries, index.banks, i))); +        } + +        let chain = Promise.resolve(); +        for (const loader of loaders) { +            chain = chain.then(loader); +        } + +        return chain; +    }); +}  |