From b3636f2710395d3270fafd1af2ac3ef54716f2cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Feh=C3=A9r=20Roland?= Date: Tue, 14 Oct 2025 15:20:20 +0200 Subject: [PATCH] Support adding servers --- js/trdom_servermanager.js | 46 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 43 insertions(+), 3 deletions(-) diff --git a/js/trdom_servermanager.js b/js/trdom_servermanager.js index 7a5d121..836cc3c 100644 --- a/js/trdom_servermanager.js +++ b/js/trdom_servermanager.js @@ -53,8 +53,12 @@ class trdom_servermanager extends EventTarget { server.refreshTorrentList(); } - addServer(name, url, user, pass) { - this.#registerServer(name, {'rpcurl': url, 'auth': `Basic ${btoa(`${user}:${pass}`)}`}); + addServer(name, url, user = null, pass = '') { + let initdata = {rpcurl: url}; + if (user != null) { + initdata.auth = `Basic ${btoa(`${user}:${pass}`)}` + } + this.#registerServer(name, initdata); this.#saveServers(); } @@ -136,7 +140,43 @@ class trdom_servermanager extends EventTarget { switch (e.currentTarget.getAttributeNS('trweb', 'servermanagerbutton')) { case 'add': e.stopPropagation(); - window.alert('Server add form isn\'t implemented'); + let addName = window.prompt('Enter name for the new server'); + if (addName != null) { + if (addName == '') { + window.alert('No name was provided, aborting'); + } + else { + if (this.#servers[addName] != null) { + window.alert('Server with the provided name already exists, aborting'); + } + else { + let addUrl = window.prompt('Enter server URL', 'http://localhost:9091/transmission/rpc'); + if (addUrl != null) { + if (addUrl == '') { + window.alert('No URL provided, aborting'); + } + else { + let addUser; + let addPass; + addUser = window.prompt('Enter username, leave empty of not required'); + if (addUser == null) { + return; + } + if (addUser == '') { + addUser = null; + } + else { + addPass = window.prompt(`Enter password for user ${addUser}`); + if (addPass == null) { + return; + } + } + this.addServer(addName, addUrl, addUser, addPass); + } + } + } + } + } break; case 'block': e.stopPropagation();