From a0a7b7e26331900852e579cab20d439624a4be79 Mon Sep 17 00:00:00 2001 From: Alex Hope-O'Connor Date: Wed, 5 Nov 2025 20:47:10 +1000 Subject: [PATCH] Refactor WiFi scanning JavaScript to use raw string literal template - Remove async parameter from WiFi_scanNetworks() method signatures - Move JavaScript code to templates/WiFiPollingJS.h using R"rawliteral" format - Fix JavaScript syntax errors by eliminating quote escaping issues - Change scan status route from /wifi/scanstatus to /wifistatus to avoid route conflicts - Cleaner code structure with JavaScript in separate template file --- lib/WiFiManager/include/WiFiManager.h | 2 - .../include/templates/WiFiPollingJS.h | 112 ++++++++++++++++++ lib/WiFiManager/include/wm_consts_en.h | 2 +- lib/WiFiManager/src/WiFiManager.cpp | 108 +---------------- 4 files changed, 115 insertions(+), 109 deletions(-) create mode 100644 lib/WiFiManager/include/templates/WiFiPollingJS.h diff --git a/lib/WiFiManager/include/WiFiManager.h b/lib/WiFiManager/include/WiFiManager.h index a562351..7f671dd 100644 --- a/lib/WiFiManager/include/WiFiManager.h +++ b/lib/WiFiManager/include/WiFiManager.h @@ -782,8 +782,6 @@ protected: String WiFi_psk(bool persistent = true) const; bool WiFi_scanNetworks(); bool WiFi_scanNetworks(bool force); // Always async - returns false if scan started but not complete - bool WiFi_scanNetworks(bool force,bool async); // async parameter ignored - always async - bool WiFi_scanNetworks(unsigned int cachetime,bool async); // async parameter ignored - always async bool WiFi_scanNetworks(unsigned int cachetime); void WiFi_scanComplete(int networksFound); bool WiFiSetCountry(); diff --git a/lib/WiFiManager/include/templates/WiFiPollingJS.h b/lib/WiFiManager/include/templates/WiFiPollingJS.h new file mode 100644 index 0000000..46c6a2b --- /dev/null +++ b/lib/WiFiManager/include/templates/WiFiPollingJS.h @@ -0,0 +1,112 @@ +/** + * WiFiPollingJS.h + * JavaScript code for WiFi network scanning with AJAX polling + * This is embedded in the WiFi configuration page for async WiFi scanning + */ + +#ifndef _WIFI_POLLING_JS_H_ +#define _WIFI_POLLING_JS_H_ + +#include + +const char PROGMEM WIFI_POLLING_JS[] = R"rawliteral( + +)rawliteral"; + +#endif // _WIFI_POLLING_JS_H_ + diff --git a/lib/WiFiManager/include/wm_consts_en.h b/lib/WiFiManager/include/wm_consts_en.h index cf703fb..d728709 100644 --- a/lib/WiFiManager/include/wm_consts_en.h +++ b/lib/WiFiManager/include/wm_consts_en.h @@ -59,7 +59,7 @@ const char R_exit[] PROGMEM = "/exit"; const char R_close[] PROGMEM = "/close"; const char R_erase[] PROGMEM = "/erase"; const char R_status[] PROGMEM = "/status"; -const char R_scanstatus[] PROGMEM = "/wifi/scanstatus"; +const char R_scanstatus[] PROGMEM = "/wifistatus"; const char R_update[] PROGMEM = "/update"; const char R_updatedone[] PROGMEM = "/u"; diff --git a/lib/WiFiManager/src/WiFiManager.cpp b/lib/WiFiManager/src/WiFiManager.cpp index d3c4744..5b231e1 100644 --- a/lib/WiFiManager/src/WiFiManager.cpp +++ b/lib/WiFiManager/src/WiFiManager.cpp @@ -11,6 +11,7 @@ */ #include "WiFiManager.h" +#include "templates/WiFiPollingJS.h" #if defined(ESP8266) || defined(ESP32) @@ -1501,104 +1502,7 @@ void WiFiManager::handleWifi(AsyncWebServerRequest *request, boolean scan) { reportStatus(page); // Add JavaScript for AJAX polling - page += F(""); + page += FPSTR(WIFI_POLLING_JS); page += getHTTPEnd(); @@ -1675,17 +1579,9 @@ bool WiFiManager::WiFi_scanNetworks(){ return WiFi_scanNetworks(false); } -bool WiFiManager::WiFi_scanNetworks(unsigned int cachetime,bool async){ - // async parameter ignored - always async now - return WiFi_scanNetworks(millis()-_lastscan > cachetime); -} bool WiFiManager::WiFi_scanNetworks(unsigned int cachetime){ return WiFi_scanNetworks(millis()-_lastscan > cachetime); } -bool WiFiManager::WiFi_scanNetworks(bool force,bool async){ - // async parameter ignored - always async now - return WiFi_scanNetworks(force); -} bool WiFiManager::WiFi_scanNetworks(bool force){ #ifdef WM_DEBUG_LEVEL // DEBUG_WM(WM_DEBUG_DEV,_numNetworks,(millis()-_lastscan ));