From 5609fe35d736bbf7cac0722d6de1e12c836b44f9 Mon Sep 17 00:00:00 2001 From: Rune Harlyk Date: Tue, 23 Apr 2024 20:34:16 +0200 Subject: [PATCH] Makes wifi settings you eventsocket --- app2/src/routes/wifi/sta/Wifi.svelte | 14 ++++++-------- .../ESP32-sveltekit/WiFiSettingsService.cpp | 19 ++++++++++--------- .../lib/ESP32-sveltekit/WiFiSettingsService.h | 13 ++++++++----- 3 files changed, 24 insertions(+), 22 deletions(-) diff --git a/app2/src/routes/wifi/sta/Wifi.svelte b/app2/src/routes/wifi/sta/Wifi.svelte index 8834723..8ec56f1 100644 --- a/app2/src/routes/wifi/sta/Wifi.svelte +++ b/app2/src/routes/wifi/sta/Wifi.svelte @@ -33,6 +33,7 @@ import Check from '~icons/tabler/check'; import InfoDialog from '$lib/components/InfoDialog.svelte'; import type { KnownNetworkItem, WifiSettings, WifiStatus } from '$lib/types/models'; + import { socket } from '$lib/stores'; let networkEditable: KnownNetworkItem = { ssid: '', @@ -101,16 +102,13 @@ return wifiSettings; } - const interval = setInterval(async () => { - getWifiStatus(); - }, 5000); - - onDestroy(() => clearInterval(interval)); + onDestroy(() => socket.off('WiFiSettings')); onMount(() => { - if (!$page.data.features.security || $user.admin) { - getWifiSettings(); - } + socket.on('WiFiSettings', (data) => { + wifiSettings = data + dndNetworkList = wifiSettings.wifi_networks + }) }); async function postWiFiSettings(data: WifiSettings) { diff --git a/esp32/lib/ESP32-sveltekit/WiFiSettingsService.cpp b/esp32/lib/ESP32-sveltekit/WiFiSettingsService.cpp index 4c510fc..074f096 100644 --- a/esp32/lib/ESP32-sveltekit/WiFiSettingsService.cpp +++ b/esp32/lib/ESP32-sveltekit/WiFiSettingsService.cpp @@ -14,15 +14,15 @@ #include -WiFiSettingsService::WiFiSettingsService(PsychicHttpServer *server, - FS *fs, - SecurityManager *securityManager, - EventSocket *socket) : _server(server), - _securityManager(securityManager), - _httpEndpoint(WiFiSettings::read, WiFiSettings::update, this, server, WIFI_SETTINGS_SERVICE_PATH, securityManager, - AuthenticationPredicates::IS_ADMIN, WIFI_SETTINGS_BUFFER_SIZE), - _fsPersistence(WiFiSettings::read, WiFiSettings::update, this, fs, WIFI_SETTINGS_FILE), _lastConnectionAttempt(0), - _socket(socket) +WiFiSettingsService::WiFiSettingsService(PsychicHttpServer *server, FS *fs, SecurityManager *securityManager, + EventSocket *socket) + : _server(server), _securityManager(securityManager), + _httpEndpoint(WiFiSettings::read, WiFiSettings::update, this, server, WIFI_SETTINGS_SERVICE_PATH, securityManager, + AuthenticationPredicates::IS_ADMIN, WIFI_SETTINGS_BUFFER_SIZE), + _eventEndpoint(WiFiSettings::read, WiFiSettings::update, this, socket, EVENT_WIFI_SETTINGS, + WIFI_SETTINGS_BUFFER_SIZE), + _fsPersistence(WiFiSettings::read, WiFiSettings::update, this, fs, WIFI_SETTINGS_FILE), _lastConnectionAttempt(0), + _socket(socket) { addUpdateHandler([&](const String &originId) { reconfigureWiFiConnection(); }, @@ -52,6 +52,7 @@ void WiFiSettingsService::begin() _socket->registerEvent(EVENT_RSSI); _httpEndpoint.begin(); + _eventEndpoint.begin(); } void WiFiSettingsService::reconfigureWiFiConnection() diff --git a/esp32/lib/ESP32-sveltekit/WiFiSettingsService.h b/esp32/lib/ESP32-sveltekit/WiFiSettingsService.h index 986ef66..8f82da3 100644 --- a/esp32/lib/ESP32-sveltekit/WiFiSettingsService.h +++ b/esp32/lib/ESP32-sveltekit/WiFiSettingsService.h @@ -15,16 +15,17 @@ * the terms of the LGPL v3 license. See the LICENSE file for details. **/ -#include -#include -#include -#include +#include #include #include #include #include -#include #include +#include +#include +#include +#include +#include #include #ifndef FACTORY_WIFI_SSID @@ -52,6 +53,7 @@ #define WIFI_SETTINGS_BUFFER_SIZE 2048 #define EVENT_RSSI "rssi" +#define EVENT_WIFI_SETTINGS "WiFiSettings" // Struct defining the wifi settings typedef struct @@ -214,6 +216,7 @@ private: PsychicHttpServer *_server; SecurityManager *_securityManager; HttpEndpoint _httpEndpoint; + EventEndpoint _eventEndpoint; FSPersistence _fsPersistence; EventSocket *_socket; unsigned long _lastConnectionAttempt;