From 73e158062a74ceb7befe98d6519f68143338d2de Mon Sep 17 00:00:00 2001
From: Wayne Elgin <wayne.elgin@gmail.com>
Date: Tue, 14 Jul 2020 18:07:33 -0500
Subject: [PATCH] Fix copy mailto email addresses

---
 src/js/main.js | 96 ++++++++++++++++++++++++--------------------------
 1 file changed, 47 insertions(+), 49 deletions(-)

diff --git a/src/js/main.js b/src/js/main.js
index 16d4b0b7..41202eda 100644
--- a/src/js/main.js
+++ b/src/js/main.js
@@ -2,52 +2,50 @@
 
 
 // Copy email address ----------------------------------------------------------
-// function getEmailOnly(element) {
-//   var emailRegex = /^(?:mailto:?)([a-zA-Z0-9_\-.]+@[a-zA-Z0-9-]+\.[a-zA-Z\-.]{2,})(?:\?subject\=.*)?$/;
-//   return emailRegex.exec(element.getAttribute("href"))[1]
-// }
-
-// function getEmailElements() {
-//   return document.querySelectorAll("[data-mailto]")
-// }
-
-// function generateCopyEmailButton(element) {
-//   var email = getEmailOnly(element);
-//   var newEl = document.createElement("button");
-//   newEl.className = "c-email-button";
-//   newEl.setAttribute("data-copy-email", true);
-//   newEl.setAttribute("type", "button");
-//   newEl.addEventListener("click", function(e) {
-//     navigator.clipboard.writeText(email).then(function () {
-//       console.log(email + ' copy successful!');
-//     }).catch(function (error) {
-//       console.error('failed to copy ' + email);
-//       window.alert("Please enable clipboard access for this site.");
-//     });
-//   })
-//   newEl.innerText = "Copy"
-//   element.after(newEl);
-// }
-
-// function processEmailHrefs() {
-//   var emailElements = getEmailElements();
-//   emailElements.forEach(generateCopyEmailButton);
-// }
-
-// navigator.clipboard && navigator.permissions && navigator.permissions.query({
-//   name: 'clipboard-write'
-// }).then(function (permissionStatus) {
-//   // Will be 'granted', 'denied' or 'prompt':
-//   if (permissionStatus.state === "granted") {
-//     processEmailHrefs();
-//   }
-
-//   // Listen for changes to the permission state
-//   permissionStatus.onchange = function () {
-//     if (permissionStatus.state === "granted") {
-//       processEmailHrefs();
-//     }
-//   };
-// });
-
-// generateCopyEmailButton();
+function getEmailOnly(element) {
+  var emailRegex = /^(?:mailto:?)([a-zA-Z0-9_\-.]+@[a-zA-Z0-9-]+\.[a-zA-Z\-.]{2,})(?:\?subject\=.*)?$/;
+  return emailRegex.exec(element.getAttribute("href"))[1]
+}
+
+function getEmailElements() {
+  return document.querySelectorAll("[data-mailto]");
+}
+
+function generateCopyEmailButton(element) {
+  var email = getEmailOnly(element);
+  var newEl = document.createElement("button");
+  newEl.className = "c-email-button";
+  newEl.setAttribute("data-copy-email", true);
+  newEl.setAttribute("type", "button");
+  newEl.addEventListener("click", function(e) {
+    navigator.clipboard.writeText(email).then(function () {
+      console.log('successfully copied: "' + email + '"');
+    }).catch(function (error) {
+      console.error('failed to copy ' + email);
+      window.alert("Please enable clipboard access for this site.");
+    });
+  })
+  newEl.innerText = "Copy"
+  element.after(newEl);
+}
+
+function processEmailHrefs() {
+  var emailElements = getEmailElements();
+  emailElements.forEach(generateCopyEmailButton);
+}
+
+navigator.clipboard && navigator.permissions && navigator.permissions.query({
+  name: 'clipboard-write'
+}).then(function (permissionStatus) {
+  // Will be 'granted', 'denied' or 'prompt':
+  if (permissionStatus.state === "granted") {
+    processEmailHrefs();
+  }
+
+  // Listen for changes to the permission state
+  permissionStatus.onchange = function () {
+    if (permissionStatus.state === "granted") {
+      processEmailHrefs();
+    }
+  };
+});
-- 
GitLab