diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1982f7f..783e45b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,10 @@
# Change Log
+## 3.2 - 2019-04-03
+
+### Added
+- Country column to message list
+
## 3.1.4 - 2017-07-24
### Fixed
diff --git a/chrome.manifest b/chrome.manifest
index ec2f06d..285394a 100644
--- a/chrome.manifest
+++ b/chrome.manifest
@@ -10,8 +10,9 @@ locale mailhops pt-BR jar:chrome/mailhops.jar!/locale/pt-BR/
locale mailhops ru jar:chrome/mailhops.jar!/locale/ru/
locale mailhops zh-CN jar:chrome/mailhops.jar!/locale/zh-CN/
-# Postbox
+# Postbox 5
overlay chrome://messenger/content/mailWindowOverlay.xul chrome://mailhops/content/msgNotificationBar.xul application=postbox@postbox-inc.com
# Thunberbird
overlay chrome://messenger/content/mailWindowOverlay.xul chrome://mailhops/content/msgNotificationBar.xul application={3550f703-e582-4d05-9a08-453d09bdfdc6}
+overlay chrome://messenger/content/messenger.xul chrome://mailhops/content/msgListColumn.xul application={3550f703-e582-4d05-9a08-453d09bdfdc6}
\ No newline at end of file
diff --git a/chrome/content/mailhops.js b/chrome/content/mailhops.js
index 05bdb98..de4dc08 100644
--- a/chrome/content/mailhops.js
+++ b/chrome/content/mailhops.js
@@ -405,7 +405,7 @@ mailHops.LOG(lookupURL);
var d = new Date();
data.meta.cached = d.toISOString();
//save the result
- mailHops.saveResults(JSON.stringify(data),data.response.route);
+ mailHops.saveResults(data, data.response.route);
//display the result
mailHopsDisplay.route(header_route, mailHops.message, data.response, data.meta, lookupURL);
} else if(data.error){
@@ -422,7 +422,7 @@ mailHops.LOG(lookupURL);
xmlhttp.send(null);
};
-mailHops.saveResults = function(results,route){
+mailHops.saveResults = function(results, route){
if(!mailHops.msgURI)
return false;
@@ -432,13 +432,23 @@ mailHops.saveResults = function(results,route){
if(!msgHdr)
return false;
+
+ if(!results){
+ msgHdr.setStringProperty( "MH-Route", '' );
+ return false;
+ }
- msgHdr.setStringProperty( "MH-Route", results );
+ var countryCode = mailHopsUtils.getOriginatingCountryCode(route);
+
+ if(!!countryCode){
+ results.sender = { countryCode: countryCode };
+ }
+
+ msgHdr.setStringProperty( "MH-Route", JSON.stringify(results) );
//Add tag
- if(!!route && !!mailHops.options.api_key){
- try {
- var countryCode = mailHopsUtils.getOriginatingCountryCode(route);
+ if(!!countryCode && !!mailHops.options.api_key){
+ try {
var msg = Components.classes["@mozilla.org/array;1"].createInstance(Components.interfaces.nsIMutableArray);
msg.clear();
msg.appendElement(msgHdr, false);
@@ -488,8 +498,8 @@ mailHops.getResults = function(){
};
mailHops.refreshCache = function(){
- mailHops.saveResults('');
+ mailHops.saveResults();
mailHops.getRoute();
};
-addEventListener ( "messagepane-loaded" , mailHops.setupEventListener , true ) ;
+addEventListener( "messagepane-loaded" , mailHops.setupEventListener , true );
\ No newline at end of file
diff --git a/chrome/content/msgListColumn.js b/chrome/content/msgListColumn.js
new file mode 100644
index 0000000..443773d
--- /dev/null
+++ b/chrome/content/msgListColumn.js
@@ -0,0 +1,70 @@
+var columnHandler = {
+ getCellText: function(row, col) {return null;},
+ getSortStringForRow: function(msgHdr) {
+ msgHdr.getStringProperty( "MH-Route" );
+ var countryCode = null;
+ var cached_results = msgHdr.getStringProperty( "MH-Route" );
+ if(cached_results){
+ try {
+ cached_results = JSON.parse(cached_results);
+ if(cached_results.sender && cached_results.sender.countryCode){
+ countryCode = cached_results.sender.countryCode;
+ } else {
+ countryCode = mailHopsUtils.getOriginatingCountryCode(cached_results.response.route);
+ }
+ if(countryCode){
+ return 'chrome://mailhops/content/images/flags/'+countryCode.toLowerCase()+'.png';
+ }
+ } catch(e) {
+ return countryCode;
+ }
+ }
+ return countryCode;
+ },
+ isString: function() {return true;},
+
+ getCellProperties: function(row, col, props){},
+ getRowProperties: function(row, props){},
+ getImageSrc: function(row, col) {
+ var msgKey = gDBView.getKeyAt(row);
+ var msgHdr = gDBView.db.GetMsgHdrForKey(msgKey);
+ var countryCode = null;
+ var cached_results = msgHdr.getStringProperty( "MH-Route" );
+ if(cached_results){
+ try {
+ cached_results = JSON.parse(cached_results);
+ if(cached_results.sender && cached_results.sender.countryCode){
+ countryCode = cached_results.sender.countryCode;
+ } else {
+ countryCode = mailHopsUtils.getOriginatingCountryCode(cached_results.response.route);
+ }
+ if(countryCode){
+ return 'chrome://mailhops/content/images/flags/'+countryCode.toLowerCase()+'.png';
+ }
+ } catch(e) {
+ return null;
+ }
+ }
+ return null;
+ },
+ getSortLongForRow: function(hdr) {return 0;}
+ };
+
+var CreateDbObserver = {
+ // Components.interfaces.nsIObserver
+ observe: function(aMsgFolder, aTopic, aData)
+ {
+ addCustomColumnHandler();
+ }
+};
+
+function doOnceLoaded() {
+ var ObserverService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
+ ObserverService.addObserver(CreateDbObserver, "MsgCreateDBView", false);
+}
+
+function addCustomColumnHandler() {
+ gDBView.addColumnHandler("colMailHops", columnHandler);
+}
+
+addEventListener( "load", doOnceLoaded, false );
\ No newline at end of file
diff --git a/chrome/content/msgListColumn.xul b/chrome/content/msgListColumn.xul
new file mode 100644
index 0000000..705e0ed
--- /dev/null
+++ b/chrome/content/msgListColumn.xul
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/chrome/content/preferences.js b/chrome/content/preferences.js
index c2f517a..ac9dd55 100644
--- a/chrome/content/preferences.js
+++ b/chrome/content/preferences.js
@@ -70,7 +70,7 @@ var mailHopPreferences = {
}
if(!!this.api_key.value.trim()){
document.getElementById("mailhops-membership-link").value='My Account';
- document.getElementById("mailhops-membership-link").setAttribute('data-account-url','https://mailhops.com/account/'+this.api_key.value.trim());
+ document.getElementById("mailhops-membership-link").setAttribute('href','https://mailhops.com/account/'+this.api_key.value.trim());
}
if(pref.getCharPref("mail.mailHops.country_tag",'false')=='false')
document.getElementById("mailhop.country_tag").checked = false;
@@ -87,10 +87,6 @@ var mailHopPreferences = {
else
document.getElementById("mailhop.hide_compact").checked = true;
- document.getElementById("mailhops-membership-link").addEventListener("click", function () {
- mailHopsUtils.launchExternalURL(this.getAttribute('data-account-url'));
- });
-
this.saveAPIKey();
document.getElementById("mailhop.bar_color").addEventListener("input", function () {
@@ -152,11 +148,17 @@ var mailHopPreferences = {
document.getElementById("rate-remaining").value='';
document.getElementById("rate-reset").value='';
document.getElementById("mailhops-membership-link").value='Join MailHops';
- document.getElementById("mailhops-membership-link").setAttribute('data-account-url','https://mailhops.com');
+ document.getElementById("mailhops-membership-link").setAttribute('href','https://mailhops.com');
var items = document.getElementsByClassName('filters');
- for(x in items){ items[x].disabled = true; }
+ for(x in items){
+ items[x].disabled = true;
+ }
var items = document.getElementsByClassName('country');
- for(x in items){ items[x].disabled = true; if(items[x].label) items[x].label = items[x].label.toUpperCase();}
+ for(x in items){
+ items[x].disabled = true;
+ if(items[x].label)
+ items[x].label = items[x].label.toUpperCase();
+ }
},
saveAPIKey: function() {
@@ -185,7 +187,7 @@ var mailHopPreferences = {
else
document.getElementById("rate-reset").value = "Resets in: "+Math.round(data.account.rate.reset/60/60)+" hr.";
document.getElementById("mailhops-membership-link").value='My Account';
- document.getElementById("mailhops-membership-link").setAttribute('data-account-url','https://mailhops.com/account/'+api_key);
+ document.getElementById("mailhops-membership-link").setAttribute('href','https://mailhops.com/account/'+api_key);
var items = document.getElementsByClassName('filters');
for(x in items){ items[x].disabled = false;}
diff --git a/chrome/content/preferences.xul b/chrome/content/preferences.xul
index 1db2e41..0f9d5a8 100644
--- a/chrome/content/preferences.xul
+++ b/chrome/content/preferences.xul
@@ -33,7 +33,7 @@
- API Key
+ API Key
diff --git a/install.rdf b/install.rdf
index 07fdadb..7067ca6 100644
--- a/install.rdf
+++ b/install.rdf
@@ -5,7 +5,7 @@
2
thunderbird@mailhops.com
- 3.1.8
+ 3.2.0
MailHops
MailHops maps the route an email took to get to you. Displaying the senders location, weather, user-agent and authentication used.