coinhive-example/js/main.js

112 lines
3.5 KiB
JavaScript

var anonminer = new CoinHive.Anonymous(sitekey, {
threads: 2
});
function ajax(url, method = "GET", data = "", tryJson = true) {
return new Promise((resolve, reject) => {
var httpRequest = new XMLHttpRequest();
httpRequest.onreadystatechange = function() {
if (httpRequest.readyState === XMLHttpRequest.DONE) {
if (httpRequest.status === 200) {
var response = httpRequest.responseText;
if (tryJson) {
try {
response = JSON.parse(response)
} catch (e) {}
}
resolve(response)
} else {
reject()
}
}
};
httpRequest.open(method, url, true);
if (method === "POST") {
httpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
httpRequest.send(data)
} else {
httpRequest.send()
}
})
}
function updateTop10() {
ajax("api.php").then(function(answer) {
console.log(answer);
var list = document.getElementById('top10');
list.innerHTML = "";
for (var key in answer) {
var value = answer[key];
list.insertAdjacentHTML('beforeend', '<li>' + key + ': ' + value + '</li>');
}
}, function() {})
}
function login(userid) {
document.getElementById('add').style.display = "none";
document.getElementById('notloggedin').style.display = "none";
document.getElementById('loggedin').style.display = "inline";
document.getElementById('usernametext').innerHTML = userid;
document.getElementById('remove').style.display = "inline";
if(anonminer.isRunning()) {
anonminer.stop();
}
var miner = new CoinHive.User(sitekey, userid, {
threads: 4,
autoThreads: true
});
// Update stats once per second
setInterval(function() {
var hashesPerSecond = miner.getHashesPerSecond();
var totalHashes = miner.getTotalHashes();
var acceptedHashes = miner.getAcceptedHashes();
console.log(hashesPerSecond + " " + totalHashes + " " + acceptedHashes);
document.getElementById('details_threads').innerHTML = miner.getNumThreads();
document.getElementById('details_hashes').innerHTML = hashesPerSecond;
document.getElementById('details_total').innerHTML = totalHashes;
document.getElementById('details_accepted').innerHTML = acceptedHashes;
}, 1000);
miner.start(CoinHive.IF_EXCLUSIVE_TAB);
}
var showDialogButton = document.querySelector('#add');
showDialogButton.addEventListener('click', function() {
window.location.replace("index.php?login");
});
var logoutButton = document.querySelector('#remove');
logoutButton.addEventListener('click', function() {
window.location.replace("index.php?logout");
});
if (username != null) {
login(username);
} else {
anonminer.start();
}
updateTop10();
setInterval(function() {
updateTop10();
}, 60000);
setInterval(function() {
if (username == null) {
var button = document.getElementById("add");
button.classList.add("shake-slow");
button.classList.add("shake-constant");
setTimeout(function(){
button.classList.remove("shake-slow");
button.classList.remove("shake-constant");
}, 2000);
}
}, 5000);