var composeStateListener = { NotifyComposeBodyReady: function() { } }; // From addressingWidgetOverlay.js; we use this to call the function to update // the status of the encryption keys for the various "To" fields. This is for // the case where the user presses "Return" or "Tab" and Thunderbird inserts a // new "To" row, and we then update the encryption key status for each row. function awRecipientKeyPress(event, element) { switch(event.keyCode) { case KeyEvent.DOM_VK_RETURN: case KeyEvent.DOM_VK_TAB: // if the user text contains a comma or a line return, ignore if (element.value.includes(',')) { var addresses = element.value; element.value = ""; // clear out the current line so we don't try to autocomplete it.. parseAndAddAddresses(addresses, awGetPopupElement(awGetRowByInputElement(element)).value); } else if (event.keyCode == KeyEvent.DOM_VK_TAB) awTabFromRecipient(element, event); // Bitmask: update the encryption status. checkToField.updateEncryptionStatus(); break; } } var checkToField = { // It is possible to enter all "To" addresses in a single field but since we // are displaying the encryption key per field (per row), we need to split a // single field into multiple fields if it contains a "," and then check // the encryption status for each field. splitInput: function(event) { let id = event.target.id; id = id.slice(id.lastIndexOf('#')+1); let toFieldInput = document.getElementById("addressCol2#" + id); if (toFieldInput.value.includes(",")) { let addresses = toFieldInput.value; toFieldInput.value = ""; parseAndAddAddresses(addresses, awGetPopupElement(awGetRowByInputElement(toFieldInput)).value); checkToField.updateEncryptionStatus(); } }, updateEncryptionStatus: function() { for (let i = 1; i <= awGetNumberOfRecipients(); i++) { // Get the "To" field which has the email address. let toField = document.getElementById("addressCol2#" + i); // gCurrentIdentity.email returns the current identity. let promise = bitmask.keys.exprt(gCurrentIdentity.email, toField.value); if (toField.value) { let image = document.createElement("image"); toField.appendChild(image); promise.then(function(data) { toField.getElementsByTagName("image")[0].setAttribute("src", "chrome://bitmask/skin/lock.png"); }).catch(function(error) { toField.getElementsByTagName("image")[0].setAttribute("src", "chrome://bitmask/skin/unlock.png"); }); } else { toField.getElementsByTagName("image")[0].setAttribute("src", ""); } } } }; window.addEventListener("compose-window-init", function(event) { gMsgCompose.RegisterStateListener(composeStateListener); }, true);