diff --git a/src/lib/NetworkingTab.svelte b/src/lib/NetworkingTab.svelte index 3f3ae1e..3429c96 100644 --- a/src/lib/NetworkingTab.svelte +++ b/src/lib/NetworkingTab.svelte @@ -27,79 +27,80 @@ console.log("Copy ip to clipboard: Error: " + msg); } } - function getButtonText(state) - { - switch(state) - { - case "DISCONNECTED": - return "Connect to Tailscale"; - case "DOWNLOADING": - return "Loading IP stack..."; - case "LOGINSTARTING": - return "Starting Login..."; - case "LOGINREADY": - return "Login to Tailscale"; - case "CONNECTED": - return `IP: ${networkData.currentIp}`; - case "IPCOPIED": - return "Copied!"; - default: - break; - } - return `Text for state: ${state}`; - } - function isClickableState(state) - { - switch(state) - { - case "DISCONNECTED": - case "LOGINREADY": - case "CONNECTED": - return true; - } - return false; - } - function getClickHandler(state) - { - switch(state) - { - case "DISCONNECTED": - return handleConnect; - } - return null; - } - function getClickUrl(state) - { - switch(state) - { - case "LOGINREADY": - return networkData.loginUrl; - case "CONNECTED": - return networkData.dashboardUrl; - } - return null; - } - function getButtonTooltip(state) - { - switch(state) - { - case "CONNECTED": - return "Right-click to copy"; - } - return null; - } - function getRightClickHandler(state) - { - switch(state) - { - case "CONNECTED": - return handleCopyIP; - } - return null; + +function updateButtonData(state) { + switch(state) { + case "DISCONNECTED": + return { + buttonText: "Connect to Tailscale", + isClickable: true, + clickHandler: handleConnect, + clickUrl: null, + buttonTooltip: null, + rightClickHandler: null + }; + case "DOWNLOADING": + return { + buttonText: "Loading IP stack...", + isClickable: false, + clickHandler: null, + clickUrl: null, + buttonTooltip: null, + rightClickHandler: null + }; + case "LOGINSTARTING": + return { + buttonText: "Starting Login...", + isClickable: false, + clickHandler: null, + clickUrl: null, + buttonTooltip: null, + rightClickHandler: null + }; + case "LOGINREADY": + return { + buttonText: "Login to Tailscale", + isClickable: true, + clickHandler: null, + clickUrl: networkData.loginUrl, + buttonTooltip: null, + rightClickHandler: null + }; + case "CONNECTED": + return { + buttonText: `IP: ${networkData.currentIp}`, + isClickable: true, + clickHandler: null, + clickUrl: networkData.dashboardUrl, + buttonTooltip: "Right-click to copy", + rightClickHandler: handleCopyIP + }; + case "IPCOPIED": + return { + buttonText: "Copied!", + isClickable: false, + clickHandler: null, + clickUrl: null, + buttonTooltip: null, + rightClickHandler: null + }; + default: + return { + buttonText: `Text for state: ${state}`, + isClickable: false, + clickHandler: null, + clickUrl: null, + buttonTooltip: null, + rightClickHandler: null + }; } +} + +let buttonData = null; +$: buttonData = updateButtonData($connectionState);

Networking

- + {#if $connectionState == "CONNECTED"} {/if}