diff --git a/js/search.js b/js/search.js index 7432717..1d190a9 100644 --- a/js/search.js +++ b/js/search.js @@ -37,6 +37,7 @@ function isRegexEntry(name) { function readMasterlist(err, data) { if (err) { console.log(err); + document.getElementById('progress').classList.add('hidden'); return; } @@ -73,9 +74,36 @@ function readMasterlist(err, data) { console.log("Search complete."); } +function fetchMasterlist(err, data) { + if (err) { + console.log(err); + document.getElementById('progress').classList.add('hidden'); + return; + } + + for (var i = 0; i < data.tree.length; ++i) { + if (data.tree[i].path == 'masterlist.yaml') { + github.repos('loot', gameSelect.selected).git.blobs(data.tree[i].sha).read(readMasterlist); + break; + } + } +} + +function fetchTree(err, data) { + if (err) { + console.log(err); + document.getElementById('progress').classList.add('hidden'); + return; + } + + github.repos('loot', gameSelect.selected).git.trees(data.object.sha).fetch(fetchMasterlist); +} + function onSearchInit(evt) { - var repo = github.repos('loot', gameSelect.selected); - repo.contents('masterlist.yaml').read({ref: repoBranch}, readMasterlist); + /* The GitHub Repository API can't be used because it only supports + files of sizes up to 1 MB. The Skyrim masterlist is larger than this, so + use the GitHub Git Data API instead. */ + github.repos('loot', gameSelect.selected).git.refs('heads/' + repoBranch).fetch(fetchTree); /* Clear any previous search results. */ var progress = document.getElementById('progress');