@@ -37,33 +37,37 @@ bool applyPreset(byte index)
3737void savePreset (byte index, bool persist, const char * pname, JsonObject saveobj)
3838{
3939 if (index == 0 || index > 250 ) return ;
40- bool docAlloc = fileDoc;
40+ bool docAlloc = ( fileDoc != nullptr ) ;
4141 JsonObject sObj = saveobj;
4242
4343 if (!docAlloc) {
4444 DEBUGFS_PRINTLN (F (" Allocating saving buffer" ));
45- fileDoc = new DynamicJsonDocument (JSON_BUFFER_SIZE);
46- sObj = fileDoc-> to <JsonObject>();
45+ DynamicJsonDocument lDoc (JSON_BUFFER_SIZE);
46+ sObj = lDoc. to <JsonObject>();
4747 if (pname) sObj [" n" ] = pname;
48- } else {
48+ DEBUGFS_PRINTLN (F (" Save current state" ));
49+ serializeState (sObj , true );
50+ currentPreset = index;
51+
52+ writeObjectToFileUsingId (" /presets.json" , index, &lDoc);
53+ } else { // from JSON API
4954 DEBUGFS_PRINTLN (F (" Reuse recv buffer" ));
5055 sObj .remove (F (" psave" ));
5156 sObj .remove (F (" v" ));
52- }
5357
54- if (!sObj [" o" ]) {
55- DEBUGFS_PRINTLN (F (" Save current state" ));
56- serializeState (sObj , true , sObj [" ib" ], sObj [" sb" ]);
57- currentPreset = index;
58- }
59- sObj .remove (" o" );
60- sObj .remove (" ib" );
61- sObj .remove (" sb" );
62- sObj .remove (F (" error" ));
63- sObj .remove (F (" time" ));
58+ if (!sObj [" o" ]) {
59+ DEBUGFS_PRINTLN (F (" Save current state" ));
60+ serializeState (sObj , true , sObj [" ib" ], sObj [" sb" ]);
61+ currentPreset = index;
62+ }
63+ sObj .remove (" o" );
64+ sObj .remove (" ib" );
65+ sObj .remove (" sb" );
66+ sObj .remove (F (" error" ));
67+ sObj .remove (F (" time" ));
6468
65- writeObjectToFileUsingId (" /presets.json" , index, fileDoc);
66- if (!docAlloc) delete fileDoc;
69+ writeObjectToFileUsingId (" /presets.json" , index, fileDoc);
70+ }
6771 presetsModifiedTime = now (); // unix time
6872 updateFSInfo ();
6973}
0 commit comments