From 6cf510bb7bc7c5180fbcc9d9d2af25303ae9129e Mon Sep 17 00:00:00 2001 From: Knut Anderssen Date: Wed, 12 Jun 2024 11:11:28 +0100 Subject: [PATCH 1/4] Apply changes immediately when connection and disconnecting --- rust/agama-server/src/network/web.rs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/rust/agama-server/src/network/web.rs b/rust/agama-server/src/network/web.rs index 5cc6744625..6375ff45d0 100644 --- a/rust/agama-server/src/network/web.rs +++ b/rust/agama-server/src/network/web.rs @@ -315,6 +315,12 @@ async fn connect( .await .map_err(|_| NetworkError::CannotApplyConfig)?; + state + .network + .apply() + .await + .map_err(|_| NetworkError::CannotApplyConfig)?; + Ok(StatusCode::NO_CONTENT) } @@ -341,6 +347,12 @@ async fn disconnect( .await .map_err(|_| NetworkError::CannotApplyConfig)?; + state + .network + .apply() + .await + .map_err(|_| NetworkError::CannotApplyConfig)?; + Ok(StatusCode::NO_CONTENT) } From c8304d4a39c810df0dcd163650851a9bc4c8cfa6 Mon Sep 17 00:00:00 2001 From: Knut Anderssen Date: Wed, 12 Jun 2024 11:12:04 +0100 Subject: [PATCH 2/4] Fix disconnect and connect urls --- web/src/client/network/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/web/src/client/network/index.js b/web/src/client/network/index.js index 5ded4036ac..a56bf51feb 100644 --- a/web/src/client/network/index.js +++ b/web/src/client/network/index.js @@ -225,7 +225,7 @@ class NetworkClient { * @param {Connection} connection - connection to be activated */ async connectTo(connection) { - return this.client.get(`/network/${connection.id}/connect`); + return this.client.get(`/network/connections/${connection.id}/connect`); } /** @@ -234,7 +234,7 @@ class NetworkClient { * @param {Connection} connection - connection to be activated */ async disconnect(connection) { - return this.client.get(`/network/${connection.id}/disconnect`); + return this.client.get(`/network/connections/${connection.id}/disconnect`); } /** From 07b1c1b032721eb29388cd0d6788364f4f7b18c0 Mon Sep 17 00:00:00 2001 From: Knut Anderssen Date: Wed, 12 Jun 2024 11:12:50 +0100 Subject: [PATCH 3/4] Fix client network variable --- web/src/components/network/WifiSelector.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/src/components/network/WifiSelector.jsx b/web/src/components/network/WifiSelector.jsx index 9e3951124f..caf51cb48c 100644 --- a/web/src/components/network/WifiSelector.jsx +++ b/web/src/components/network/WifiSelector.jsx @@ -139,7 +139,7 @@ function WifiSelector({ isOpen = false, onClose }) { onSelectionCallback={(network) => { switchSelectedNetwork(network); if (network.settings && !network.device) { - client.network.connectTo(network.settings); + client.connectTo(network.settings); } }} onCancelSelectionCallback={() => switchSelectedNetwork(activeNetwork)} From e4172e54f91c9f0612276f18f350a42a10f0cebb Mon Sep 17 00:00:00 2001 From: Knut Anderssen Date: Wed, 12 Jun 2024 12:17:49 +0100 Subject: [PATCH 4/4] Show connect and disconnect buttons --- .../network/WifiNetworkListItem.jsx | 2 +- .../components/network/WifiNetworkMenu.jsx | 23 ++++++++++++++++++- web/src/components/network/WifiSelector.jsx | 2 +- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/web/src/components/network/WifiNetworkListItem.jsx b/web/src/components/network/WifiNetworkListItem.jsx index 8fed500da0..f67a235997 100644 --- a/web/src/components/network/WifiNetworkListItem.jsx +++ b/web/src/components/network/WifiNetworkListItem.jsx @@ -95,7 +95,7 @@ function WifiNetworkListItem({ network, isSelected, isActive, onSelect, onCancel {networkState(network.device?.state)} {network.settings && - } + } {isSelected && (!network.settings || network.error) && diff --git a/web/src/components/network/WifiNetworkMenu.jsx b/web/src/components/network/WifiNetworkMenu.jsx index 06e22ed554..dd37b47722 100644 --- a/web/src/components/network/WifiNetworkMenu.jsx +++ b/web/src/components/network/WifiNetworkMenu.jsx @@ -31,7 +31,7 @@ const KebabToggle = ({ toggleRef, onClick }) => ( ); -export default function WifiNetworkMenu({ settings, position = "right" }) { +export default function WifiNetworkMenu({ settings, position = "right", device, onConnect }) { const client = useInstallerClient(); const [isOpen, setIsOpen] = useState(false); const toggle = () => setIsOpen(!isOpen); @@ -45,6 +45,27 @@ export default function WifiNetworkMenu({ settings, position = "right" }) { position={position} > + {!device && + { + await client.network.connectTo(settings); + onConnect(); + }} + icon={} + > + {/* TRANSLATORS: menu label, connect to the selected WiFi network */} + {_("Connect")} + } + {device && + await client.network.disconnect(settings)} + icon={} + > + {/* TRANSLATORS: menu label, disconnect from the selected WiFi network */} + {_("Disconnect")} + } {