From 782929b006ebe46e5cde6d737ab9d354dae4374e Mon Sep 17 00:00:00 2001 From: Craig Schardt Date: Fri, 6 Dec 2024 22:30:41 -0600 Subject: [PATCH] Fix "Manage Device Networking" toggle being disabled incorrectly (#1620) This fixes a bug introduced in #1592 that caused the Manage Device Networking toggle to be disabled for systems where PhotonVision is managing the network. There is still a problem with the toggle defaulting to "off" and not staying in the "on" position after settings are saved. I need help from someone who understands the frontend to figure out why it keeps getting set back to "off". --------- Co-authored-by: Matt Co-authored-by: Cameron (3539) --- .../common/configuration/NetworkConfig.java | 23 +------------------ .../dataflow/websocket/UINetConfig.java | 2 ++ .../common/networking/NetworkManager.java | 2 +- 3 files changed, 4 insertions(+), 23 deletions(-) diff --git a/photon-core/src/main/java/org/photonvision/common/configuration/NetworkConfig.java b/photon-core/src/main/java/org/photonvision/common/configuration/NetworkConfig.java index fd4890a31..c18768f7b 100644 --- a/photon-core/src/main/java/org/photonvision/common/configuration/NetworkConfig.java +++ b/photon-core/src/main/java/org/photonvision/common/configuration/NetworkConfig.java @@ -21,12 +21,8 @@ import com.fasterxml.jackson.annotation.JsonAlias; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.databind.ObjectMapper; -import java.util.HashMap; -import java.util.Map; import org.photonvision.common.hardware.Platform; import org.photonvision.common.networking.NetworkMode; -import org.photonvision.common.util.file.JacksonUtils; public class NetworkConfig { // Can be an integer team number, or an IP address @@ -104,17 +100,6 @@ public class NetworkConfig { config.matchCamerasOnlyByPath); } - public Map toHashMap() { - try { - var ret = new ObjectMapper().convertValue(this, JacksonUtils.UIMap.class); - ret.put("canManage", this.deviceCanManageNetwork()); - return ret; - } catch (Exception e) { - e.printStackTrace(); - return new HashMap<>(); - } - } - @JsonIgnore public String getPhysicalInterfaceName() { return this.networkManagerIface; @@ -125,18 +110,12 @@ public class NetworkConfig { return "\"" + networkManagerIface + "\""; } - @JsonIgnore - public boolean shouldManage() { - return this.shouldManage; - } - - @JsonIgnore public void setShouldManage(boolean shouldManage) { this.shouldManage = shouldManage && this.deviceCanManageNetwork(); } @JsonIgnore - private boolean deviceCanManageNetwork() { + protected boolean deviceCanManageNetwork() { return Platform.isLinux(); } diff --git a/photon-core/src/main/java/org/photonvision/common/dataflow/websocket/UINetConfig.java b/photon-core/src/main/java/org/photonvision/common/dataflow/websocket/UINetConfig.java index b9cc906c6..dd146b7df 100644 --- a/photon-core/src/main/java/org/photonvision/common/dataflow/websocket/UINetConfig.java +++ b/photon-core/src/main/java/org/photonvision/common/dataflow/websocket/UINetConfig.java @@ -27,8 +27,10 @@ public class UINetConfig extends NetworkConfig { super(config); this.networkInterfaceNames = networkInterfaceNames; this.networkingDisabled = networkingDisabled; + this.canManage = this.deviceCanManageNetwork(); } public List networkInterfaceNames; public boolean networkingDisabled; + public boolean canManage; } diff --git a/photon-core/src/main/java/org/photonvision/common/networking/NetworkManager.java b/photon-core/src/main/java/org/photonvision/common/networking/NetworkManager.java index e2f44103f..9a543c496 100644 --- a/photon-core/src/main/java/org/photonvision/common/networking/NetworkManager.java +++ b/photon-core/src/main/java/org/photonvision/common/networking/NetworkManager.java @@ -113,7 +113,7 @@ public class NetworkManager { } public void reinitialize() { - initialize(ConfigManager.getInstance().getConfig().getNetworkConfig().shouldManage()); + initialize(ConfigManager.getInstance().getConfig().getNetworkConfig().shouldManage); DataChangeService.getInstance() .publishEvent(