From 4a96f7db0badc2cd034beb3dba2ec9494e7e4d47 Mon Sep 17 00:00:00 2001 From: suchmememanyskill <38142618+suchmememanyskill@users.noreply.github.com> Date: Sun, 9 Jun 2024 00:18:57 +0200 Subject: [PATCH] Fix gcode previews with special chars not loading --- CYD-Klipper/src/ui/gcode_img.cpp | 19 +++++++++++-------- CYD-Klipper/src/ui/gcode_img.h | 2 +- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/CYD-Klipper/src/ui/gcode_img.cpp b/CYD-Klipper/src/ui/gcode_img.cpp index eb7cbe9..8f20215 100644 --- a/CYD-Klipper/src/ui/gcode_img.cpp +++ b/CYD-Klipper/src/ui/gcode_img.cpp @@ -2,6 +2,7 @@ #include "lvgl.h" #include "ui_utils.h" #include +#include #include #include "../conf/global_config.h" #include "../core/http_client.h" @@ -10,29 +11,27 @@ static unsigned char * data_png = NULL; static char img_filename_path[256] = {0}; static lv_img_dsc_t img_header = {0}; -bool has_128_128_gcode(const char* filename) +bool has_32_32_gcode_img(const char* filename) { if (filename == NULL){ Serial.println("No gcode filename"); return false; } - SETUP_HTTP_CLIENT("/server/files/thumbnails?filename=" + String(filename)); - + SETUP_HTTP_CLIENT("/server/files/thumbnails?filename=" + urlEncode(filename)); int httpCode = 0; try { httpCode = client.GET(); } catch (...){ Serial.println("Exception while fetching gcode img location"); - return {0}; + return false; } if (httpCode == 200) { - String payload = client.getString(); JsonDocument doc; - deserializeJson(doc, payload); + deserializeJson(doc, client.getStream()); auto result = doc["result"].as(); const char* chosen_thumb = NULL; @@ -58,6 +57,10 @@ bool has_128_128_gcode(const char* filename) return true; } } + else + { + Serial.printf("Failed to fetch gcode image data: %d\n", httpCode); + } return false; } @@ -71,7 +74,7 @@ lv_obj_t* draw_gcode_img() return NULL; } - SETUP_HTTP_CLIENT_FULL("/server/files/gcodes/" + String(img_filename_path), false, 2000); + SETUP_HTTP_CLIENT_FULL("/server/files/gcodes/" + urlEncode(img_filename_path), false, 2000); int httpCode = 0; try { @@ -121,7 +124,7 @@ lv_obj_t* show_gcode_img(const char* filename) return NULL; } - if (!has_128_128_gcode(filename)){ + if (!has_32_32_gcode_img(filename)){ Serial.println("No 32x32 gcode img found"); return NULL; } diff --git a/CYD-Klipper/src/ui/gcode_img.h b/CYD-Klipper/src/ui/gcode_img.h index 75f7074..ba591a9 100644 --- a/CYD-Klipper/src/ui/gcode_img.h +++ b/CYD-Klipper/src/ui/gcode_img.h @@ -2,5 +2,5 @@ #include "lvgl.h" lv_obj_t* show_gcode_img(const char* filename); -bool has_128_128_gcode(const char* filename); +bool has_32_32_gcode_img(const char* filename); void clear_img_mem(); \ No newline at end of file