From bb4348a7f19a1f08d79cdd2e38568bc04abaf077 Mon Sep 17 00:00:00 2001
From: Eric Duminil <eric.duminil@gmail.com>
Date: Tue, 15 Feb 2022 23:35:54 +0100
Subject: [PATCH] Show password with ***** in HTML form

Needs more testing
---
 ampel-firmware/src/lib/IotWebConf/src/IotWebConfParameter.cpp | 4 ++--
 ampel-firmware/src/lib/IotWebConf/src/IotWebConfTParameter.h  | 4 ++--
 ampel-firmware/web_config.cpp                                 | 2 --
 3 files changed, 4 insertions(+), 6 deletions(-)

diff --git a/ampel-firmware/src/lib/IotWebConf/src/IotWebConfParameter.cpp b/ampel-firmware/src/lib/IotWebConf/src/IotWebConfParameter.cpp
index be9d99b..269c38e 100644
--- a/ampel-firmware/src/lib/IotWebConf/src/IotWebConfParameter.cpp
+++ b/ampel-firmware/src/lib/IotWebConf/src/IotWebConfParameter.cpp
@@ -400,7 +400,7 @@ String PasswordParameter::renderHtml(
   bool dataArrived,
   bool hasValueFromPost, String valueFromPost)
 {
-  return TextParameter::renderHtml("password", true, String(""));
+  return TextParameter::renderHtml("password", true, String(this->valueBuffer));
 }
 
 void PasswordParameter::debugTo(Stream* out)
@@ -425,7 +425,7 @@ void PasswordParameter::update(String newValue)
   Serial.print(this->getId());
   Serial.print(": ");
 #endif
-  if (newValue.length() > 0)
+  if (newValue != current->valueBuffer)
   {
     // -- Value was set.
     newValue.toCharArray(current->valueBuffer, current->getLength());
diff --git a/ampel-firmware/src/lib/IotWebConf/src/IotWebConfTParameter.h b/ampel-firmware/src/lib/IotWebConf/src/IotWebConfTParameter.h
index 65796d5..ecf50c8 100644
--- a/ampel-firmware/src/lib/IotWebConf/src/IotWebConfTParameter.h
+++ b/ampel-firmware/src/lib/IotWebConf/src/IotWebConfTParameter.h
@@ -575,7 +575,7 @@ using CharArrayDataType<len>::CharArrayDataType;
     Serial.print(this->getId());
     Serial.print(": ");
 #endif
-    if (newValue.length() > 0)
+    if (newValue != this->_value)
     {
       // -- Value was set.
       strncpy(this->_value, newValue.c_str(), len);
@@ -601,7 +601,7 @@ protected:
   virtual String renderHtml(
     bool dataArrived, bool hasValueFromPost, String valueFromPost) override
   {
-    return InputParameter::renderHtml(dataArrived, true, String(""));
+    return InputParameter::renderHtml(dataArrived, true, String(this->_value));
   }
 private:
   const char* _customHtmlPwd = "ondblclick=\"pw(this.id)\"";
diff --git a/ampel-firmware/web_config.cpp b/ampel-firmware/web_config.cpp
index 1d4672d..d4096b9 100644
--- a/ampel-firmware/web_config.cpp
+++ b/ampel-firmware/web_config.cpp
@@ -15,7 +15,6 @@
 #include "src/lib/IotWebConf/src/IotWebConfTParameter.h"
 #include "src/lib/IotWebConf/src/IotWebConfOptionalGroup.h"
 
-//TODO: Check memory consumption. Disable DEBUG info?
 //TODO: Convert all strings to F-strings
 
 namespace web_config {
@@ -114,7 +113,6 @@ namespace web_config {
   TextTParameter<STRING_LEN> mqttUserParam =
       Builder<TextTParameter<STRING_LEN>>("mqtt_user").label("MQTT User").defaultValue(MQTT_USER).build();
 
-  //TODO: Show the number of * for password?
   PasswordTParameter<STRING_LEN> mqttPasswordParam = Builder<PasswordTParameter<STRING_LEN>>("mqtt_password").label(
       "MQTT password").defaultValue(MQTT_PASSWORD).build();
 
-- 
GitLab