[ai] dir streaming, still problems

This commit is contained in:
2025-10-05 23:29:22 +02:00
parent dc735c044f
commit 083dfd6e2a
4 changed files with 45 additions and 10 deletions

View File

@@ -578,6 +578,44 @@ String DirectoryNode::getDirectoryStructureHTML() const {
return html;
}
void DirectoryNode::streamDirectoryHTML(Print &out) const {
if (name == "/") {
out.println(F("<ul>"));
delay(0); // yield to WiFi/other tasks
}
if (name != "/") {
out.print(F("<li data-id=\""));
out.print(id);
out.print(F("\"><b>"));
out.print(name);
out.println(F("</b></li>"));
delay(0); // yield periodically while streaming
}
for (size_t i = 0; i < mp3Files.size(); i++) {
out.print(F("<li data-id=\""));
out.print(ids[i]);
out.print(F("\">"));
out.print(mp3Files[i]);
out.println(F("</li>"));
if ((i & 0x0F) == 0) { // yield every ~16 items
delay(0);
}
}
for (DirectoryNode* child : subdirectories) {
delay(0); // yield before descending
child->streamDirectoryHTML(out);
delay(0); // and after returning
}
if (name == "/") {
out.println(F("</ul>"));
delay(0);
}
}
// NEW: Calculate exact required size first
size_t DirectoryNode::calculateHTMLSize() const {
size_t size = 0;