Minor code restructuring

This commit is contained in:
Alessandro Pignotti 2025-03-11 18:21:58 +01:00
parent 379f9f3033
commit e251f2af20

View File

@ -27,79 +27,80 @@
console.log("Copy ip to clipboard: Error: " + msg); console.log("Copy ip to clipboard: Error: " + msg);
} }
} }
function getButtonText(state)
{ function updateButtonData(state) {
switch(state) switch(state) {
{
case "DISCONNECTED": case "DISCONNECTED":
return "Connect to Tailscale"; return {
buttonText: "Connect to Tailscale",
isClickable: true,
clickHandler: handleConnect,
clickUrl: null,
buttonTooltip: null,
rightClickHandler: null
};
case "DOWNLOADING": case "DOWNLOADING":
return "Loading IP stack..."; return {
buttonText: "Loading IP stack...",
isClickable: false,
clickHandler: null,
clickUrl: null,
buttonTooltip: null,
rightClickHandler: null
};
case "LOGINSTARTING": case "LOGINSTARTING":
return "Starting Login..."; return {
buttonText: "Starting Login...",
isClickable: false,
clickHandler: null,
clickUrl: null,
buttonTooltip: null,
rightClickHandler: null
};
case "LOGINREADY": case "LOGINREADY":
return "Login to Tailscale"; return {
buttonText: "Login to Tailscale",
isClickable: true,
clickHandler: null,
clickUrl: networkData.loginUrl,
buttonTooltip: null,
rightClickHandler: null
};
case "CONNECTED": case "CONNECTED":
return `IP: ${networkData.currentIp}`; return {
buttonText: `IP: ${networkData.currentIp}`,
isClickable: true,
clickHandler: null,
clickUrl: networkData.dashboardUrl,
buttonTooltip: "Right-click to copy",
rightClickHandler: handleCopyIP
};
case "IPCOPIED": case "IPCOPIED":
return "Copied!"; return {
buttonText: "Copied!",
isClickable: false,
clickHandler: null,
clickUrl: null,
buttonTooltip: null,
rightClickHandler: null
};
default: default:
break; return {
buttonText: `Text for state: ${state}`,
isClickable: false,
clickHandler: null,
clickUrl: null,
buttonTooltip: null,
rightClickHandler: null
};
} }
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;
} }
let buttonData = null;
$: buttonData = updateButtonData($connectionState);
</script> </script>
<h1 class="text-lg font-bold">Networking</h1> <h1 class="text-lg font-bold">Networking</h1>
<PanelButton buttonImage="assets/tailscale.svg" clickUrl={getClickUrl($connectionState)} clickHandler={getClickHandler($connectionState)} rightClickHandler={getRightClickHandler($connectionState)} buttonTooltip={getButtonTooltip($connectionState)} buttonText={getButtonText($connectionState)}> <PanelButton buttonImage="assets/tailscale.svg" clickUrl={buttonData.clickUrl} clickHandler={buttonData.clickHandler} rightClickHandler={buttonData.rightClickHandler} buttonTooltip={buttonData.buttonTooltip} buttonText={buttonData.buttonText}>
{#if $connectionState == "CONNECTED"} {#if $connectionState == "CONNECTED"}
<i class='fas fa-circle fa-xs ml-auto {$exitNode ? 'text-green-500' : 'text-amber-500'}' title={$exitNode ? 'Ready' : 'No exit node'}></i> <i class='fas fa-circle fa-xs ml-auto {$exitNode ? 'text-green-500' : 'text-amber-500'}' title={$exitNode ? 'Ready' : 'No exit node'}></i>
{/if} {/if}