From 3b86985ae3d7dcb96531a733888d9574a173a5f0 Mon Sep 17 00:00:00 2001
From: gerlofvanek <gerlof@particl.io>
Date: Fri, 15 Nov 2024 16:58:01 +0100
Subject: [PATCH] ui: Fixed bug with Copied to clipboard.

---
 basicswap/templates/wallet.html | 108 ++++++++++++++++----------------
 1 file changed, 54 insertions(+), 54 deletions(-)

diff --git a/basicswap/templates/wallet.html b/basicswap/templates/wallet.html
index 133646e..aca5281 100644
--- a/basicswap/templates/wallet.html
+++ b/basicswap/templates/wallet.html
@@ -456,63 +456,63 @@
 </script>
 {% endif %}
 <script>
-    function copyToClipboard(text) {
-        const el = document.createElement('textarea');
-        el.value = text;
-        document.body.appendChild(el);
-        el.select();
-        document.execCommand('copy');
-        document.body.removeChild(el);
-    }
+let clickTimeout = null;
 
-    function copyAndShowMessage(elementId) {
-        const addressElement = document.getElementById(elementId);
-        if (!addressElement) return;
-        const addressText = addressElement.innerText.trim();
-        copyToClipboard(addressText);
-        addressElement.innerText = 'Copied to clipboard';
+function copyToClipboard(text) {
+   const el = document.createElement('textarea');
+   el.value = text;
+   document.body.appendChild(el);
+   el.select();
+   document.execCommand('copy');
+   document.body.removeChild(el);
+}
 
-        const originalWidth = addressElement.offsetWidth;
+function copyAndShowMessage(elementId) {
+   const addressElement = document.getElementById(elementId);
+   if (!addressElement) return;
+   const addressText = addressElement.innerText.trim();
+   
+   if (addressText === 'Copied to clipboard') return;
+   
+   copyToClipboard(addressText);
+   addressElement.innerText = 'Copied to clipboard';
+   const originalWidth = addressElement.offsetWidth;
+   addressElement.classList.add('copying');
+   addressElement.parentElement.style.width = `${originalWidth}px`;
+   setTimeout(function () {
+       addressElement.innerText = addressText;
+       addressElement.classList.remove('copying');
+       addressElement.parentElement.style.width = '';
+   }, 1000);
+}
 
-        addressElement.classList.add('copying');
-
-        addressElement.parentElement.style.width = `${originalWidth}px`;
-
-        setTimeout(function () {
-            addressElement.innerText = addressText;
-            addressElement.classList.remove('copying');
-            addressElement.parentElement.style.width = '';
-        }, 2000);
-    }
-
-    const stealthAddressElement = document.getElementById('stealth_address');
-    if (stealthAddressElement) {
-        stealthAddressElement.addEventListener('click', function () {
-            copyAndShowMessage('stealth_address');
-        });
-    }
-
-    const mainDepositAddressElement = document.getElementById('main_deposit_address');
-    if (mainDepositAddressElement) {
-        mainDepositAddressElement.addEventListener('click', function () {
-            copyAndShowMessage('main_deposit_address');
-        });
-    }
-
-    const moneroMainAddressElement = document.getElementById('monero_main_address');
-    if (moneroMainAddressElement) {
-        moneroMainAddressElement.addEventListener('click', function () {
-            copyAndShowMessage('monero_main_address');
-        });
-    }
-
-    const moneroSubAddressElement = document.getElementById('monero_sub_address');
-    if (moneroSubAddressElement) {
-        moneroSubAddressElement.addEventListener('click', function () {
-            copyAndShowMessage('monero_sub_address');
-        });
-    }
-  </script>
+document.addEventListener('DOMContentLoaded', function() {
+   const stealthAddressElement = document.getElementById('stealth_address');
+   if (stealthAddressElement) {
+       stealthAddressElement.addEventListener('click', function() {
+           copyAndShowMessage('stealth_address');
+       });
+   }
+   const mainDepositAddressElement = document.getElementById('main_deposit_address');
+   if (mainDepositAddressElement) {
+       mainDepositAddressElement.addEventListener('click', function() {
+           copyAndShowMessage('main_deposit_address');
+       });
+   }
+   const moneroMainAddressElement = document.getElementById('monero_main_address');
+   if (moneroMainAddressElement) {
+       moneroMainAddressElement.addEventListener('click', function() {
+           copyAndShowMessage('monero_main_address');
+       });
+   }
+   const moneroSubAddressElement = document.getElementById('monero_sub_address');
+   if (moneroSubAddressElement) {
+       moneroSubAddressElement.addEventListener('click', function() {
+           copyAndShowMessage('monero_sub_address');
+       });
+   }
+});
+</script>
   <section class="p-6">
     <div class="flex items-center">
       <h4 class="font-semibold text-2xl text-black dark:text-white">Withdraw</h4>