diff --git a/app/data/contentscript.js b/app/data/contentscript.js index a2bd7d3..f707c97 100644 --- a/app/data/contentscript.js +++ b/app/data/contentscript.js @@ -196,8 +196,7 @@ function makeRemoteDataURL(user, repo) { } function makeSelfDataURL(user, repo) { - return 'https://api.github.com/repos/' + - user + '/' + repo + '/commits'; + return 'https://api.github.com/repos/' + user + '/' + repo; } // From: http://crocodillon.com/blog/always-catch-localstorage-security-and-quota-exceeded-errors @@ -242,28 +241,49 @@ function processWithData(user, repo, remoteDataStr, selfDataStr, isFreshData) { var remoteUpdateTimeMs = mbStrToMs(mostStarredFork['pushed_at']); /* Parse self data */ - var allCommits = JSON.parse(selfDataStr); + /* This could either be the repo data (v1) or `all_commits` data (v2). */ + var selfData = JSON.parse(selfDataStr); + var selfDataToSave = null; + + var selfUpdateTimeMs = null; + if (selfData.hasOwnProperty('pushed_at')) { + /* This is not an array, but the repository data. */ + selfUpdateTimeMs = mbStrToMs(selfData['pushed_at']); + selfDataToSave = selfData; + } else { + /* This is the old all-commits data. */ + var allCommits = selfData; + if (!allCommits || allCommits.length < 1) { + if (DEBUG) { + console.log(_logName, + 'Repository does not have any commits.'); + } + return; + } - if (!allCommits || allCommits.length < 1) { - if (DEBUG) { - console.log(_logName, - 'Repository does not have any commits.'); + var latestCommit = allCommits[0]['commit']; + var committer = latestCommit['committer']; + + if (!committer) { + if (DEBUG) { + console.error(_logName, + 'Could not find the latest committer.'); + } + return; } - return; - } - var latestCommit = allCommits[0]['commit']; - var committer = latestCommit['committer']; + selfUpdateTimeMs = mbStrToMs(committer['date']); + selfDataToSave = [allCommits[0]]; + } - if (!committer) { + if (!selfUpdateTimeMs) { if (DEBUG) { console.error(_logName, - 'Could not find the latest committer.'); + 'Could not find the selfUpdateTimeMs.'); } return; } - var selfUpdateTimeMs = mbStrToMs(committer['date']); /* Cache data, if necessary */ if (isFreshData) { @@ -283,7 +303,7 @@ function processWithData(user, repo, remoteDataStr, selfDataStr, isFreshData) { relevantRemoteDataStr); // Only the latest commit is relevant - var relevantSelfDataStr = JSON.stringify([allCommits[0]]); + var relevantSelfDataStr = JSON.stringify(selfDataToSave); localStorage.setItem(makeSelfDataKey(user, repo), relevantSelfDataStr); } catch(e) {