Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,4 +42,4 @@ Thanks goes to these wonderful people for their contributions:

| [<img src="https://avatars3.githubusercontent.com/u/9638595?s=400&v=4" width="100px;"/><br /><sub>Abhishek Deora</sub>](https://github.com/adeora7/) | [<img src="https://avatars1.githubusercontent.com/u/3146916?s=400&v=4" width="100px;"/><br /><sub>Duy Nguyen</sub>](https://github.com/zuik) | [<img src="https://avatars0.githubusercontent.com/u/21180050?s=400&v=4" width="100px;"/><br /><sub>Will Bray</sub>](https://github.com/raindogg) | [<img src="https://avatars0.githubusercontent.com/u/5430873?s=400&v=4" width="100px;"/><br /><sub>Luke Taylor</sub>](https://github.com/lmcjt37) | [<img src="https://avatars3.githubusercontent.com/u/4543453?s=400&v=4" width="100px;"/><br /><sub>Andreas Kleinbub</sub>](https://github.com/ehnydeel) | [<img src="https://avatars3.githubusercontent.com/u/5253753?s=400&v=4" width="100px;"/><br /><sub>Bhavesh Gohel</sub>](https://github.com/bhaveshgohel) | [<img src="https://avatars3.githubusercontent.com/u/15846964?s=400&v=4" width="100px;"/><br /><sub>Rafael Klaessen</sub>](https://github.com/rafaelklaessen) |
| :---: | :---: | :---: | :---: | :--: | :--: | :--: |
| [<img src="https://avatars1.githubusercontent.com/u/499513?s=400&v=4" width="100px;"/><br /><sub>Richard Robinson</sub>](https://github.com/kincade71) | [<img src="https://avatars2.githubusercontent.com/u/3191489?v=4" width="100px;"/><br /><sub>Fredrik Mäkilä</sub>](https://github.com/GitHug) | [<img src="https://avatars3.githubusercontent.com/u/7880824?s=460&v=4" width="100px;"/><br /><sub>Joseph Allen</sub>](https://github.com/GitHug) |
| [<img src="https://avatars1.githubusercontent.com/u/499513?s=400&v=4" width="100px;"/><br /><sub>Richard Robinson</sub>](https://github.com/kincade71) | [<img src="https://avatars2.githubusercontent.com/u/3191489?v=4" width="100px;"/><br /><sub>Fredrik Mäkilä</sub>](https://github.com/GitHug) | [<img src="https://avatars3.githubusercontent.com/u/7880824?s=460& v=4" width="100px;"/><br /><sub>Joseph Allen</sub>](https://github.com/GitHug) | [<img src="https://avatars2.githubusercontent.com/u/7473298?s=460&v=4" width="100px;"/><br /><sub>Ehsan Zumrut</sub>](https://github.com/EhsanZ) |
44 changes: 44 additions & 0 deletions main.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
const setData = require("./popup").setData;
const initData = require("./popup").initData;

var inputHandle = document.getElementById("githubHandle");
var btn = document.getElementById("check");

if (
document.getElementById("githubHandle").value === "" &&
chrome.storage !== undefined
) {
chrome.storage.sync.get("lastSearched", function (data) {
var storedHandle = data["lastSearched"];
if (storedHandle != "" && storedHandle != null) {
setData(storedHandle);
}
});
}

inputHandle.onkeydown = function (event) {
if (event.keyCode == 13) {
btn.click();
}
};

document.getElementById("show").onclick = function () {
document.getElementById("dialog").showModal();
document.getElementById("overlay").style.visibility = "visible";
};

document.getElementById("closeBtn").onclick = function () {
document.getElementById("dialog").close();
document.getElementById("overlay").style.visibility = "collapse";
};

btn.onclick = function () {
var handle = document.getElementById("githubHandle").value;
var result = document.getElementById("result");
if (handle != "" && handle != null) {
result.innerHTML = "Loading...";
initData(handle);
} else {
result.innerHTML = "Please enter a valid Github Username";
}
};
2 changes: 1 addition & 1 deletion popup.html
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,6 @@
</div>
</div>

<script src="popup.js"></script>
<script src="main.js"></script>
</body>
</html>
309 changes: 136 additions & 173 deletions popup.js
Original file line number Diff line number Diff line change
@@ -1,176 +1,139 @@
var inputHandle = document.getElementById("githubHandle");
var btn = document.getElementById("check");

if (
document.getElementById("githubHandle").value === "" &&
chrome.storage !== undefined
) {
chrome.storage.sync.get("lastSearched", function(data) {
var storedHandle = data["lastSearched"];
if (storedHandle != "" && storedHandle != null) {
setData(storedHandle);
}
});
}

inputHandle.onkeydown = function(event) {
if (event.keyCode == 13) {
btn.click();
}
};

document.getElementById("show").onclick = function() {
document.getElementById("dialog").showModal();
document.getElementById("overlay").style.visibility = "visible";
};

document.getElementById("closeBtn").onclick = function() {
document.getElementById("dialog").close();
document.getElementById("overlay").style.visibility = "collapse";
};

btn.onclick = function() {
var handle = document.getElementById("githubHandle").value;
var result = document.getElementById("result");
if (handle != "" && handle != null) {
result.innerHTML = "Loading...";
initData(handle);
} else {
result.innerHTML = "Please enter a valid Github Username";
}
};

function getMessage(total_count) {
var message = "";
switch (total_count) {
case 0:
return "It's never too late to start! Go and get hacking!";
case 1:
return "One down, four to go! Keep going!";
case 2:
return "Awesome work! You're almost halfway there!";
case 3:
return "Don't stop now, you're closer to the finish line!";
case 4:
return "Just one more, give it your best shot!";
default:
return "You did it! Congratulations for completing Hacktoberfest 2018!";
}
}

function updateMostRecentUsers(user) {

chrome.storage.sync.get("mostRecentUsers", function(data) {
var mostRecentUsers = data["mostRecentUsers"] || [];
var hasUser = false;
if (mostRecentUsers.length > 0) {
for (var i = 0; i < mostRecentUsers.length; i++) {
mostRecentUsers[i].active = false;
if (mostRecentUsers[i].name === user.name) {
hasUser = true;
mostRecentUsers[i].active = true;
module.exports = {
getMessage(total_count) {
switch (total_count) {
case 0:
return "It's never too late to start! Go and get hacking!";;
case 1:
return "One down, four to go! Keep going!";
case 2:
return "Awesome work! You're almost halfway there!";
case 3:
return "Don't stop now, you're closer to the finish line!";
case 4:
return "Just one more, give it your best shot!";
default:
return "You did it! Congratulations for completing Hacktoberfest 2018!";
}
}
}

if (!hasUser) {
user.active = true;
mostRecentUsers.push(user);
}

if (mostRecentUsers.length > 5) {
mostRecentUsers.shift();
}

chrome.storage.sync.set({ mostRecentUsers: mostRecentUsers }, function() {
var html = "";
for (var i = 0; i < mostRecentUsers.length; i++) {
var active = mostRecentUsers[i].active ? "active" : "";
html += `<img id='${mostRecentUsers[i].name}' class='rounded ${active}' src='${
mostRecentUsers[i].thumbnail
}' alt='${mostRecentUsers[i].name}'/>`;
}
var parent = document.getElementById("mostRecentUsers");
parent.addEventListener("click", function(e) {
setData(e.target.id);
});
parent.innerHTML = html;
});
});
}

function setData(handle) {
document.getElementById("githubHandle").value = handle;
initData(handle);
}

function getXHR(url) {
return new Promise(function(resolve, reject) {
var req = new XMLHttpRequest();
req.open("GET", url, true);
req.onreadystatechange = function() {
if (this.status === 200 && this.readyState === 4) {
resolve(JSON.parse(req.responseText));
}
if (this.status === 403) {
document.getElementById("result").innerHTML = "<div id='message' style='margin-top:10px;'>You've hit your limit, try again later.</div>";
document.getElementById("check").style.visibility = "collapse";
document.getElementById("show").style.visibility = "collapse";
}
};
req.onerror = function() {
reject(Error("Network Error"));
};
req.send();
});
}

function initData(handle) {
var avatarUrl = "";

getXHR(`https://api.github.com/users/${handle}`)
.then(function(data) {
avatarUrl = data.avatar_url;
return getXHR(
`https://api.github.com/search/issues?q=author:${handle}+type:pr+created:2018-09-30T00:00:00-12:00..2018-10-31T23:59:59-12:00+is:public`
);
})
.then(function(data) {
var prCount = data.items.length || 0;

updateMostRecentUsers({ name: handle, thumbnail: avatarUrl });
chrome.storage.sync.set(
{ lastSearched: handle, thumbnail: avatarUrl },
function() {
var res = "";
res += `<div id='resultHandle'>${handle}s progress:</div>`;
var count = (prCount > 5 ? "5" : prCount) + " / 5";
var progress = prCount * 20;
// res += ``;
res += `<div class='progress-bar'><div id='prCompleteCount'>${count}</div><div class='progress-bar--color' style='width:${progress}%'></div></div>`
var message = getMessage(prCount);
res += `<div id='message'>${message}</div>`;
document.getElementById("result").innerHTML = res;

var newestPRs = prCount > 4 ? data.items.slice(0, 5) : data.items;
if (newestPRs.length > 0) {
var content = "";
var prs = newestPRs.map((v, i) => {
return `<li><a target="_blank" href="${v["html_url"]}">#${
v["number"]
} - ${v["title"]}</a></li>`;
},

updateMostRecentUsers(user) {
chrome.storage.sync.get("mostRecentUsers", function (data) {
var mostRecentUsers = data["mostRecentUsers"] || [];
var hasUser = false;
if (mostRecentUsers.length > 0) {
for (var i = 0; i < mostRecentUsers.length; i++) {
mostRecentUsers[i].active = false;
if (mostRecentUsers[i].name === user.name) {
hasUser = true;
mostRecentUsers[i].active = true;
}
}
}

if (!hasUser) {
user.active = true;
mostRecentUsers.push(user);
}

if (mostRecentUsers.length > 5) {
mostRecentUsers.shift();
}

chrome.storage.sync.set({
mostRecentUsers: mostRecentUsers
}, function () {
var html = "";
for (var i = 0; i < mostRecentUsers.length; i++) {
var active = mostRecentUsers[i].active ? "active" : "";
html += `<img id='${mostRecentUsers[i].name}' class='rounded ${active}' src='${
mostRecentUsers[i].thumbnail}' alt='${mostRecentUsers[i].name}'/>`;
}
var parent = document.getElementById("mostRecentUsers");
parent.addEventListener("click", function (e) {
setData(e.target.id);
});
parent.innerHTML = html;
});
content += `<div id="prList"><h2>Pull requests</h2><ul>${prs.join("")}</ul></div>`;

document.getElementById("dialogContent").innerHTML = content;
document.getElementById("show").style.visibility = "visible";
} else {
document.getElementById("show").style.visibility = "collapse";
}
}
);
})
.catch(function(error) {
console.error(error);
});
});
},

setData(handle) {
document.getElementById("githubHandle").value = handle;
initData(handle);
},

getXHR(url) {
return new Promise(function (resolve, reject) {
var req = new XMLHttpRequest();
req.open("GET", url, true);
req.onreadystatechange = function () {
if (this.status === 200 && this.readyState === 4) {
resolve(JSON.parse(req.responseText));
}
if (this.status === 403) {
document.getElementById("result").innerHTML = "<div id='message' style='margin-top:10px;'>You've hit your limit, try again later.</div>";
document.getElementById("check").style.visibility = "collapse";
document.getElementById("show").style.visibility = "collapse";
}
};
req.onerror = function () {
reject(Error("Network Error"));
};
req.send();
});
},

initData(handle) {
var avatarUrl = "";

getXHR(`https://api.github.com/users/${handle}`)
.then(function (data) {
avatarUrl = data.avatar_url;
return getXHR(
`https://api.github.com/search/issues?q=author:${handle}+type:pr+created:2018-09-30T00:00:00-12:00..2018-10-31T23:59:59-12:00+is:public`
);
})
.then(function (data) {
var prCount = data.items.length || 0;

updateMostRecentUsers({
name: handle,
thumbnail: avatarUrl
});

chrome.storage.sync.set({
lastSearched: handle,
thumbnail: avatarUrl
},
function () {
var res = "";
res += `<div id='resultHandle'>${handle}s progress:</div>`;
var count = (prCount > 5 ? "5" : prCount) + " / 5";
var progress = prCount * 20;
// res += ``;
res += `<div class='progress-bar'><div id='prCompleteCount'>${count}</div><div class='progress-bar--color' style='width:${progress}%'></div></div>`
var message = getMessage(prCount);
res += `<div id='message'>${message}</div>`;
document.getElementById("result").innerHTML = res;

var newestPRs = prCount > 4 ? data.items.slice(0, 5) : data.items;
if (newestPRs.length > 0) {
var content = "";
var prs = newestPRs.map((v, i) => {
return `<li><a target="_blank" href="${v["html_url"]}">#${v["number"]} - ${v["title"]}</a></li>`;
});
content += `<div id="prList"><h2>Pull requests</h2><ul>${prs.join("")}</ul></div>`;

document.getElementById("dialogContent").innerHTML = content;
document.getElementById("show").style.visibility = "visible";
} else {
document.getElementById("show").style.visibility = "collapse";
}
}
);
})
.catch(function (error) {
console.error(error);
});
}
}
Loading