From 65daa037ee654b1aa76f5e292700be63de2ea3a3 Mon Sep 17 00:00:00 2001 From: mindsolo Date: Mon, 23 Jun 2025 15:02:26 +0300 Subject: [PATCH] feat: Add proxy clone functionality to settings and monitor forms - Add Clone button next to Edit button in proxy settings list - Add Clone button next to Edit button in monitor proxy selection - Add showClone method to ProxyDialog component - Cloned proxy automatically has default flag set to false - Uses existing 'Clone' translation from language files Fixes: Allows users to easily duplicate proxy configurations without manually re-entering all settings --- src/components/ProxyDialog.vue | 32 +++++++++++++++++++++++++++++ src/components/settings/Proxies.vue | 3 ++- src/pages/EditMonitor.vue | 3 ++- 3 files changed, 36 insertions(+), 2 deletions(-) diff --git a/src/components/ProxyDialog.vue b/src/components/ProxyDialog.vue index 2f7ed7b61..5c5fa45d9 100644 --- a/src/components/ProxyDialog.vue +++ b/src/components/ProxyDialog.vue @@ -174,6 +174,38 @@ export default { this.modal.show(); }, + /** + * Show dialog to clone a proxy + * @param {number} proxyID ID of proxy to clone + * @returns {void} + */ + showClone(proxyID) { + if (proxyID) { + for (let proxy of this.$root.proxyList) { + if (proxy.id === proxyID) { + // Create a clone of the proxy data + this.proxy = { + protocol: proxy.protocol, + host: proxy.host, + port: proxy.port, + auth: proxy.auth, + username: proxy.username, + password: proxy.password, + active: proxy.active, + default: false, // Cloned proxy should not be default + applyExisting: false, + }; + break; + } + } + } + + // Set id to null to indicate this is a new proxy (clone) + this.id = null; + + this.modal.show(); + }, + /** * Submit form data for saving * @returns {void} diff --git a/src/components/settings/Proxies.vue b/src/components/settings/Proxies.vue index 4608f3aa4..2f31b7adf 100644 --- a/src/components/settings/Proxies.vue +++ b/src/components/settings/Proxies.vue @@ -13,7 +13,8 @@
  • {{ proxy.host }}:{{ proxy.port }} ({{ proxy.protocol }}) {{ $t("Default") }}
    - {{ $t("Edit") }} + {{ $t("Edit") }} | + {{ $t("Clone") }}
  • diff --git a/src/pages/EditMonitor.vue b/src/pages/EditMonitor.vue index 0d628895d..3c28c9c35 100644 --- a/src/pages/EditMonitor.vue +++ b/src/pages/EditMonitor.vue @@ -842,7 +842,8 @@ {{ $t("default") }}