Sfoglia il codice sorgente

Minor code restructuring

Alessandro Pignotti 4 mesi fa
parent
commit
e251f2af20
1 ha cambiato i file con 71 aggiunte e 70 eliminazioni
  1. 71 70
      src/lib/NetworkingTab.svelte

+ 71 - 70
src/lib/NetworkingTab.svelte

@@ -27,79 +27,80 @@
 			console.log("Copy ip to clipboard: Error: " + msg);
 			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);
 </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}