1
0
mirror of https://github.com/MailHops/mailhops-plugin.git synced 2025-05-16 06:10:08 -07:00
mailhops-plugin/js/preferences.js
Andrew Van Tassel e026c919b6 TB78 Update
2020-11-10 22:28:24 -07:00

98 lines
3.8 KiB
JavaScript

var mailHopPreferences = {
api_key: '', //api key
valid_api_key: false,
owm_key: '', //OpenWeatherMap.org api key
loadPreferences: function(){
var self = this;
this.api_key = document.getElementById("mailhop.api_key");
this.owm_key = document.getElementById("mailhop.owm_key");
document.getElementById("save").addEventListener("click", function () {
self.saveAPIKey();
});
var getting = browser.storage.local.get();
getting.then(data => {
if (data.api_key) {
self.api_key.value = data.api_key;
document.getElementById("join-link").innerHTML = 'My Account';
document.getElementById("join-link").setAttribute('href','https://mailhops.com/account/'+data.api_key);
}
if (data.owm_key) {
self.owm_key.value = data.owm_key;
}
}, error => {
self.planError(JSON.stringify(error));
});
},
savePreferences: function () {
var self = this;
browser.storage.local.set({
api_key: self.api_key.value.trim(),
owm_key: self.owm_key.value.trim()
});
return true;
},
planError: function(error){
this.valid_api_key=false;
document.getElementById("plan-error").style.display = 'block';
document.getElementById("plan-error").innerHTML = error;
document.getElementById("plan").innerHTML = '';
document.getElementById("status").innerHTML = '';
document.getElementById("rate-limit").innerHTML = '';
document.getElementById("rate-remaining").innerHTML = '';
document.getElementById("rate-reset").innerHTML = '';
},
saveAPIKey: function() {
if(Boolean(this.api_key) && this.api_key.value != ''){
var xmlhttp = new XMLHttpRequest();
var apiBase = 'https://api.mailhops.com',
accountURL = '/v2/accounts/?api_key='+this.api_key.value.trim(),
api_key = this.api_key.value.trim(),
self = this;
xmlhttp.open("GET", apiBase+accountURL, true);
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState===4) {
try {
var data = JSON.parse(xmlhttp.responseText);
if(xmlhttp.status===200){
self.valid_api_key=true;
document.getElementById("plan-error").style.display = 'none';
// set plan info
document.getElementById("plan").innerHTML = "Plan: "+data.account.subscriptions.data[0].plan.name;
document.getElementById("status").innerHTML = "Status: "+data.account.subscriptions.data[0].status;
document.getElementById("rate-limit").innerHTML = "Limit: "+data.account.rate.limit;
document.getElementById("rate-remaining").innerHTML = "Remaining: "+data.account.rate.remaining;
if(data.account.rate.reset/60 < 60)
document.getElementById("rate-reset").innerHTML = "Resets in: "+Math.round(data.account.rate.reset/60)+" min.";
else
document.getElementById("rate-reset").innerHTML = "Resets in: " + Math.round(data.account.rate.reset / 60 / 60) + " hr.";
document.getElementById("join-link").innerHTML = 'My Account';
document.getElementById("join-link").setAttribute('href','https://mailhops.com/account/'+api_key);
} else if (xmlhttp.status === 401) {
self.planError("That API key could not be found.");
}
else if (!!data.error) {
self.planError(xmlhttp.status+': '+data.error.message);
}
mailHopPreferences.savePreferences();
} catch (e){
self.planError('Connection Failed to\n '+e+'!');
}
}
};
xmlhttp.send(null);
} else {
this.planError('Enter a valid API key above.');
}
}
};
mailHopPreferences.loadPreferences();