diff --git a/server/frontend/public/js/connect/main.js b/server/frontend/public/js/connect/main.js
index c2dbea8..1882e26 100644
--- a/server/frontend/public/js/connect/main.js
+++ b/server/frontend/public/js/connect/main.js
@@ -23,7 +23,7 @@ document.body.innerHTML = `
@@ -60,4 +60,4 @@ socket.run()
Connection errored
`;
- });
\ No newline at end of file
+ });
diff --git a/server/frontend/public/js/main.js b/server/frontend/public/js/main.js
index c1916a5..096a2e6 100644
--- a/server/frontend/public/js/main.js
+++ b/server/frontend/public/js/main.js
@@ -96,6 +96,7 @@ fl.bindLoad("/connect", () => {
const portSelected = +(address.value.match(/:[0-9]{1,5}$/).at(0).slice(1,));
address.value = address.value.slice(0, -1 * (":"+portSelected).length);
port.value = portSelected;
+ document.getElementById("custom-conn-port").focus();
}
if (!port.value) {
@@ -141,6 +142,7 @@ fl.bindLoad("/connect", () => {
const servers = localServers.concat(JSON.parse(xhr.response).result.map(x => { x.fromLocal = false; return x }));
const serversByItemID = new Object();
+ const serversByAddress = new Object();
const items = [];
const itemIDs = [];
const mp = servers.map(async serverItem => {
@@ -155,15 +157,19 @@ fl.bindLoad("/connect", () => {
data.tls = serverItem.tls;
itemIDs.push({
...data,
- itemID: `con-btn-to:${data.tag}:${serverItem.address}:${serverItem.port}`
+ itemID: `con-btn-to:${data.tag}:${serverItem.address}:${serverItem.port}`,
+ deleteID: `remove-con:${serverItem.address}:${serverItem.port}`,
+ address: `${serverItem.address}:${serverItem.port}`,
});
serversByItemID[`con-btn-to:${data.tag}:${serverItem.address}:${serverItem.port}`] = { data, serverItem };
+ serversByAddress[`${serverItem.address}:${serverItem.port}`] = { data, serverItem };
resolve(items.push(`
${data.name} |
${serverItem.address}:${serverItem.port} |
${!data.tls ? '' : ''} |
${ping} |
|
+ |
`));
};
socket.send(JSON.stringify({
@@ -172,12 +178,18 @@ fl.bindLoad("/connect", () => {
};
socket.onerror = (err) => {
console.error(err);
+ itemIDs.push({
+ deleteID: `remove-con:${serverItem.address}:${serverItem.port}`,
+ address: `${serverItem.address}:${serverItem.port}`,
+ });
+ serversByAddress[`${serverItem.address}:${serverItem.port}`] = { serverItem };
resolve(items.push(`
${tr("/connect", "offline-server") ?? "Offline"} |
${serverItem.address}:${serverItem.port} |
|
${tr("/connect", "offline-server") ?? "Offline"} |
|
+ |
`));
};
});
@@ -185,7 +197,7 @@ fl.bindLoad("/connect", () => {
});
await Promise.all(mp);
- items.push(` |
`);
+ items.push(` |
`);
document.getElementById("loading-servers").innerHTML = `
${tr("/connect", "server-name-tbl") ?? "Name"} |
@@ -193,6 +205,7 @@ fl.bindLoad("/connect", () => {
${tr("/connect", "server-encryption") ?? "Encrypted"} |
${tr("/connect", "server-ping") ?? "Ping"} |
${tr("/connect", "server-action") ?? "Action"} |
+ |
${items.join("\n")}
@@ -200,11 +213,24 @@ fl.bindLoad("/connect", () => {
`;
itemIDs.forEach(btn => {
- document.getElementById(btn.itemID).onclick = () => {
- checkContentWarning(() => {
- const serverInfo = serversByItemID[btn.itemID].serverItem;
- window.open(`/connect-area?server=${serverInfo.address}:${serverInfo.port}&encrypted=${serverInfo.tls ? "true" : "false"}`);
- });
+ //console.log("btn:", btn);
+ if (btn.itemID)
+ document.getElementById(btn.itemID).onclick = () => {
+ checkContentWarning(() => {
+ const serverInfo = serversByItemID[btn.itemID].serverItem;
+ window.open(`/connect-area?server=${serverInfo.address}:${serverInfo.port}&encrypted=${serverInfo.tls ? "true" : "false"}`);
+ });
+ };
+
+ document.getElementById(btn.deleteID).onclick = () => {
+ const serverInfo = serversByAddress[btn.address].serverItem;
+ console.log("serverInfo:", serverInfo);
+ const savedServers = (JSON.parse(localStorage.getItem("savedServers") ?? "null") ?? [])
+ .filter(server => {
+ return !(server.address === serverInfo.address && server.port === serverInfo.port)
+ });
+ localStorage.setItem("savedServers", JSON.stringify(savedServers));
+ connectServers();
};
});