Changeset 509348 for content/vI_getHeader.js
- Timestamp:
- Nov 3, 2014, 12:35:40 PM (8 years ago)
- Branches:
- ng_0.9
- Children:
- 7204cb
- Parents:
- 3c9c29
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
content/vI_getHeader.js
r3c9c29 r509348 27 27 28 28 Components.utils.import("resource://v_identity/vI_nameSpaceWrapper.js"); 29 virtualIdentityExtension.ns(function() { with (virtualIdentityExtension.LIB) { 29 virtualIdentityExtension.ns(function () { 30 with(virtualIdentityExtension.LIB) { 30 31 31 Components.utils.import("resource://v_identity/stdlib/msgHdrUtils.js", virtualIdentityExtension);32 Components.utils.import("resource://v_identity/vI_prefs.js", virtualIdentityExtension);33 let Log = vI.setupLogging("virtualIdentity.getHeader");32 Components.utils.import("resource://v_identity/stdlib/msgHdrUtils.js", virtualIdentityExtension); 33 Components.utils.import("resource://v_identity/vI_prefs.js", virtualIdentityExtension); 34 let Log = vI.setupLogging("virtualIdentity.getHeader"); 34 35 35 // var storedHeaders = { };36 var getHeader = {37 unicodeConverter: Components.classes["@mozilla.org/intl/scriptableunicodeconverter"]38 36 // var storedHeaders = { }; 37 var getHeader = { 38 unicodeConverter: Components.classes["@mozilla.org/intl/scriptableunicodeconverter"] 39 .createInstance(Components.interfaces.nsIScriptableUnicodeConverter), 39 40 40 headerToSearch : null, 41 42 prefObserverToSearchArray : function() { 43 var headerList = getHeader.unicodeConverter.ConvertToUnicode(vI.vIprefs.get("smart_reply_headers")).split(/\n/) 44 45 getHeader.headerToSearch = []; 46 47 // prepare headerToSearch for speedup. 48 for (var index = 0; index < headerList.length; index++) { 49 var headerToSearch_splitted = headerList[index].split(/:/) 50 // use first part (all before ':') as the header name 51 var headerNameToSearch = headerToSearch_splitted[0].toLowerCase() 52 // check second or third part for any number 53 var headerNumberToSearch = null; 54 if (headerToSearch_splitted.length > 1) parseInt(headerToSearch_splitted[1]); 55 if ((!headerNumberToSearch || isNaN(headerNumberToSearch)) && headerToSearch_splitted.length > 2) headerNumberToSearch = parseInt(headerToSearch_splitted[2]); 56 57 // create header name to store the value 58 var headerNameToStore = headerNameToSearch; 59 if (headerNumberToSearch && !isNaN(headerNumberToSearch)) headerNameToStore += ":" + headerNumberToSearch 60 61 getHeader.headerToSearch.push({ headerNameToSearch : headerNameToSearch, headerNumberToSearch : headerNumberToSearch, 62 headerNameToStore : headerNameToStore }); 63 } 64 }, 41 headerToSearch: null, 65 42 66 getHeader: function() { 67 vI.clearDebugOutput(); 68 if (!getHeader.headerToSearch) getHeader.prefObserverToSearchArray() 69 70 vI.msgHdrGetHeaders(getHeader.hdr, function (aHeaders) { 71 let label = ""; 72 if (aHeaders.has("list-id")) { 73 getHeader.hdr.setStringProperty("vI_list-id","found"); 74 Log.debug("found header: list-id ...stored to recognize mailing-list"); 43 prefObserverToSearchArray: function () { 44 var headerList = getHeader.unicodeConverter.ConvertToUnicode(vI.vIprefs.get("smart_reply_headers")).split(/\n/) 45 46 getHeader.headerToSearch = []; 47 48 // prepare headerToSearch for speedup. 49 for (var index = 0; index < headerList.length; index++) { 50 var headerToSearch_splitted = headerList[index].split(/:/) 51 // use first part (all before ':') as the header name 52 var headerNameToSearch = headerToSearch_splitted[0].toLowerCase() 53 // check second or third part for any number 54 var headerNumberToSearch = null; 55 if (headerToSearch_splitted.length > 1) parseInt(headerToSearch_splitted[1]); 56 if ((!headerNumberToSearch || isNaN(headerNumberToSearch)) && headerToSearch_splitted.length > 2) headerNumberToSearch = parseInt(headerToSearch_splitted[2]); 57 58 // create header name to store the value 59 var headerNameToStore = headerNameToSearch; 60 if (headerNumberToSearch && !isNaN(headerNumberToSearch)) headerNameToStore += ":" + headerNumberToSearch 61 62 getHeader.headerToSearch.push({ 63 headerNameToSearch: headerNameToSearch, 64 headerNumberToSearch: headerNumberToSearch, 65 headerNameToStore: headerNameToStore 66 }); 75 67 } 76 if (aHeaders.has("received")) { 77 getHeader.hdr.setStringProperty("vI_received","found"); 78 Log.debug("found header: received ...stored to recognize received mail"); 79 } 80 if (aHeaders.has("content-base")) { 81 getHeader.hdr.setStringProperty("vI_content_base","found"); 82 Log.debug("found header: content-base ...stored to recognize blog/news-feed"); 83 } 84 for (let index = 0; index < getHeader.headerToSearch.length; index++) { 85 let {headerNameToSearch: headerNameToSearch, headerNumberToSearch: headerNumberToSearch, 86 headerNameToStore: headerNameToStore} = getHeader.headerToSearch[index]; 87 if (aHeaders.has(headerNameToSearch)) { 88 let value = ""; 89 let values = aHeaders.getAll(headerNameToSearch); 90 if (!headerNumberToSearch || isNaN(headerNumberToSearch)) 91 for (let i = 0; i < values.length;) 92 value += ((value)?(", "):("")) + values[i++]; 93 else value = values[headerNumberToSearch-1]; 94 if (value) { 95 getHeader.hdr.setStringProperty("vI_" + headerNameToStore, 96 getHeader.unicodeConverter.ConvertFromUnicode(value) + getHeader.unicodeConverter.Finish()); 97 98 let storedValue = getHeader.hdr.getProperty("vI_" + headerNameToStore); 99 let storedConvValue = getHeader.unicodeConverter.ConvertToUnicode(storedValue); 100 101 Log.debug("found header: " + headerNameToStore + 68 }, 69 70 getHeader: function () { 71 vI.clearDebugOutput(); 72 if (!getHeader.headerToSearch) getHeader.prefObserverToSearchArray() 73 74 vI.msgHdrGetHeaders(getHeader.hdr, function (aHeaders) { 75 let label = ""; 76 if (aHeaders.has("list-id")) { 77 getHeader.hdr.setStringProperty("vI_list-id", "found"); 78 Log.debug("found header: list-id ...stored to recognize mailing-list"); 79 } 80 if (aHeaders.has("received")) { 81 getHeader.hdr.setStringProperty("vI_received", "found"); 82 Log.debug("found header: received ...stored to recognize received mail"); 83 } 84 if (aHeaders.has("content-base")) { 85 getHeader.hdr.setStringProperty("vI_content_base", "found"); 86 Log.debug("found header: content-base ...stored to recognize blog/news-feed"); 87 } 88 for (let index = 0; index < getHeader.headerToSearch.length; index++) { 89 let { 90 headerNameToSearch: headerNameToSearch, 91 headerNumberToSearch: headerNumberToSearch, 92 headerNameToStore: headerNameToStore 93 } = getHeader.headerToSearch[index]; 94 if (aHeaders.has(headerNameToSearch)) { 95 let value = ""; 96 let values = aHeaders.getAll(headerNameToSearch); 97 if (!headerNumberToSearch || isNaN(headerNumberToSearch)) 98 for (let i = 0; i < values.length;) 99 value += ((value) ? (", ") : ("")) + values[i++]; 100 else value = values[headerNumberToSearch - 1]; 101 if (value) { 102 getHeader.hdr.setStringProperty("vI_" + headerNameToStore, 103 getHeader.unicodeConverter.ConvertFromUnicode(value) + getHeader.unicodeConverter.Finish()); 104 105 let storedValue = getHeader.hdr.getProperty("vI_" + headerNameToStore); 106 let storedConvValue = getHeader.unicodeConverter.ConvertToUnicode(storedValue); 107 108 Log.debug("found header: " + headerNameToStore + 102 109 " - stored as '" + storedConvValue + "'"); 103 label += (label)?"\n":"" 104 label += headerNameToStore + ":\t" + storedConvValue 110 label += (label) ? "\n" : "" 111 label += headerNameToStore + ":\t" + storedConvValue 112 } 105 113 } 106 114 } 107 } 108 vI.GetHeaderNotification.info(label); 109 }); 110 }, 111 112 setupEventListener: function() { 113 getHeader.unicodeConverter.charset = "UTF-8"; 114 115 vI.GetHeaderNotification.info(label); 116 }); 117 }, 118 119 setupEventListener: function () { 120 getHeader.unicodeConverter.charset = "UTF-8"; 121 115 122 // read headers later if msg is loaded completely - this ensures compatibility to Thunderbird Conversation 116 123 getHeader.orig_OnMsgLoaded = OnMsgLoaded; 117 124 OnMsgLoaded = getHeader.OnMsgLoaded; 118 125 119 120 121 OnMsgLoaded: function(url) {122 123 124 126 }, 127 128 OnMsgLoaded: function (url) { 129 const Cc = Components.classes; 130 const Ci = Components.interfaces; 131 // Necko URL, so convert it into a message header 125 132 let ioService = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService); 126 133 var neckoURL = ioService.newURI(null, null, url.baseURI); 127 128 129 130 134 neckoURL.QueryInterface(Ci.nsIMsgMessageUrl); 135 136 getHeader.hdr = neckoURL.messageHeader; 137 if (getHeader.hdr) getHeader.getHeader(); 131 138 getHeader.orig_OnMsgLoaded(url); 132 133 }139 } 140 } 134 141 135 142 136 var prefObserver = { 137 unicodeConverter : Components.classes["@mozilla.org/intl/scriptableunicodeconverter"] 138 .createInstance(Components.interfaces.nsIScriptableUnicodeConverter), 139 140 observer_added : false, 141 142 init : function() { 143 vI.vIprefs.addObserver("smart_reply_headers", this.observe, this); 144 }, 145 146 cleanup : function() { 147 let self = this; 148 vI.vIprefs.removeObserver("smart_reply_headers", self.observe); 149 }, 150 151 observe: function(self, subject, topic, data) { 152 if (topic == "nsPref:changed") { 153 // remove (old) prepared headerArray 154 getHeader.headerToSearch = null; 155 ReloadMessage(); 156 } 157 }, 143 var prefObserver = { 144 unicodeConverter: Components.classes["@mozilla.org/intl/scriptableunicodeconverter"] 145 .createInstance(Components.interfaces.nsIScriptableUnicodeConverter), 158 146 159 } 160 addEventListener('messagepane-loaded', getHeader.setupEventListener, true); 161 window.addEventListener("load", function(e) { prefObserver.init(); }, false); 162 window.addEventListener("unload", function(e) { prefObserver.cleanup(); }, false); 163 // vI.storedHeaders = storedHeaders; 164 }}); 147 observer_added: false, 148 149 init: function () { 150 vI.vIprefs.addObserver("smart_reply_headers", this.observe, this); 151 }, 152 153 cleanup: function () { 154 let self = this; 155 vI.vIprefs.removeObserver("smart_reply_headers", self.observe); 156 }, 157 158 observe: function (self, subject, topic, data) { 159 if (topic == "nsPref:changed") { 160 // remove (old) prepared headerArray 161 getHeader.headerToSearch = null; 162 ReloadMessage(); 163 } 164 }, 165 166 } 167 addEventListener('messagepane-loaded', getHeader.setupEventListener, true); 168 window.addEventListener("load", function (e) { 169 prefObserver.init(); 170 }, false); 171 window.addEventListener("unload", function (e) { 172 prefObserver.cleanup(); 173 }, false); 174 // vI.storedHeaders = storedHeaders; 175 } 176 });
Note: See TracChangeset
for help on using the changeset viewer.