From 8b1153df9e7332544876c6c5c636b04de0a261da Mon Sep 17 00:00:00 2001 From: jmgiacalone Date: Sat, 9 Mar 2024 15:01:34 +0000 Subject: [PATCH] Delete profile now works. --- src/main.cpp | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 4973dc6..bbbdcb9 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -145,9 +145,9 @@ String getProfilesList(void) settings.begin("profiles"); list = settings.getString("list"); Serial.println(list); - deserializeJson(jsonList, list); + // deserializeJson(jsonList, list); settings.end(); - serializeJson(jsonList,list); + // serializeJson(jsonList,list); return list; } @@ -197,21 +197,26 @@ boolean deleteProfile(AsyncWebServerRequest * request) { bool res = false; int params = request->params(); - if(params == 1){ - settings.begin("profiles"); + if(params > 0){ + String list; JsonDocument jsonList; String name = request->getParam("name",true)->value(); - deserializeJson(jsonList,settings.getString("list")); - if(jsonList.containsKey(name)){ - //remove from list - jsonList.remove(name); - String list; - serializeJson(jsonList,list); - settings.putString("list",list); - //remove profile - settings.remove(name.c_str()); - res = true; - } + settings.begin("profiles"); + list = settings.getString("list"); + Serial.printf("Removing %s from %s.\n",name,list.c_str()); + deserializeJson(jsonList,list.c_str()); + JsonArray aList = jsonList.as(); + Serial.println(aList.size()); + for (JsonArray::iterator it=aList.begin(); it!=aList.end(); ++it) { + String n = (*it).as(); + Serial.println(n); + if (n.equals(name)) { + aList.remove(it); + } + } + serializeJson(aList,list); + settings.putString("list",list); + res=true; settings.end(); } return res;