Explorar el Código

Simplify error handling

jblanked hace 1 año
padre
commit
bc382883ba
Se han modificado 2 ficheros con 63 adiciones y 42 borrados
  1. 61 42
      callback/web_crawler_callback.c
  2. 2 0
      callback/web_crawler_callback.h

+ 61 - 42
callback/web_crawler_callback.c

@@ -3,6 +3,63 @@ bool sent_http_request = false;
 bool get_success = false;
 bool get_success = false;
 bool already_success = false;
 bool already_success = false;
 
 
+void web_crawler_draw_error(Canvas *canvas)
+{
+    if (!canvas)
+    {
+        FURI_LOG_E(TAG, "Canvas is NULL");
+        return;
+    }
+    canvas_clear(canvas);
+    canvas_set_font(canvas, FontSecondary);
+
+    if (fhttp.state == INACTIVE)
+    {
+        canvas_draw_str(canvas, 0, 7, "Wifi Dev Board disconnected.");
+        canvas_draw_str(canvas, 0, 17, "Please connect to the board.");
+        canvas_draw_str(canvas, 0, 32, "If your board is connected,");
+        canvas_draw_str(canvas, 0, 42, "make sure you have flashed");
+        canvas_draw_str(canvas, 0, 52, "your WiFi Devboard with the");
+        canvas_draw_str(canvas, 0, 62, "latest FlipperHTTP flash.");
+        return;
+    }
+
+    if (fhttp.last_response)
+    {
+        if (strstr(fhttp.last_response, "[ERROR] Not connected to Wifi. Failed to reconnect.") != NULL)
+        {
+            canvas_draw_str(canvas, 0, 10, "[ERROR] Not connected to Wifi.");
+            canvas_draw_str(canvas, 0, 50, "Update your WiFi settings.");
+            canvas_draw_str(canvas, 0, 60, "Press BACK to return.");
+            return;
+        }
+        if (strstr(fhttp.last_response, "[ERROR] Failed to connect to Wifi.") != NULL)
+        {
+            canvas_draw_str(canvas, 0, 10, "[ERROR] Not connected to Wifi.");
+            canvas_draw_str(canvas, 0, 50, "Update your WiFi settings.");
+            canvas_draw_str(canvas, 0, 60, "Press BACK to return.");
+            return;
+        }
+        if (strstr(fhttp.last_response, "[ERROR] GET request failed with error: connection refused") != NULL)
+        {
+            canvas_draw_str(canvas, 0, 10, "[ERROR] Connection refused.");
+            canvas_draw_str(canvas, 0, 50, "Choose another URL.");
+            canvas_draw_str(canvas, 0, 60, "Press BACK to return.");
+            return;
+        }
+
+        canvas_draw_str(canvas, 0, 10, "[ERROR] Failed to sync data.");
+        canvas_draw_str(canvas, 0, 30, "If this is your third attempt,");
+        canvas_draw_str(canvas, 0, 40, "it's likely your URL is not");
+        canvas_draw_str(canvas, 0, 50, "compabilbe or correct.");
+        canvas_draw_str(canvas, 0, 60, "Press BACK to return.");
+        return;
+    }
+
+    canvas_draw_str(canvas, 0, 10, "HTTP request failed.");
+    canvas_draw_str(canvas, 0, 20, "Press BACK to return.");
+}
+
 void web_crawler_http_method_change(VariableItem *item)
 void web_crawler_http_method_change(VariableItem *item)
 {
 {
     uint8_t index = variable_item_get_current_value_index(item);
     uint8_t index = variable_item_get_current_value_index(item);
@@ -43,14 +100,9 @@ void web_crawler_view_draw_callback(Canvas *canvas, void *context)
     canvas_clear(canvas);
     canvas_clear(canvas);
     canvas_set_font(canvas, FontSecondary);
     canvas_set_font(canvas, FontSecondary);
 
 
-    if (fhttp.state == INACTIVE)
+    if (fhttp.state == INACTIVE || fhttp.state == ISSUE)
     {
     {
-        canvas_draw_str(canvas, 0, 7, "Wifi Dev Board disconnected.");
-        canvas_draw_str(canvas, 0, 17, "Please connect to the board.");
-        canvas_draw_str(canvas, 0, 32, "If your board is connected,");
-        canvas_draw_str(canvas, 0, 42, "make sure you have flashed");
-        canvas_draw_str(canvas, 0, 52, "your WiFi Devboard with the");
-        canvas_draw_str(canvas, 0, 62, "latest FlipperHTTP flash.");
+        web_crawler_draw_error(canvas);
         return;
         return;
     }
     }
 
 
@@ -139,12 +191,12 @@ void web_crawler_view_draw_callback(Canvas *canvas, void *context)
             if (get_success)
             if (get_success)
             {
             {
                 canvas_draw_str(canvas, 0, 30, "Receiving data...");
                 canvas_draw_str(canvas, 0, 30, "Receiving data...");
-                // Set the state to RECEIVING to ensure we continue to see the receiving message
                 fhttp.state = RECEIVING;
                 fhttp.state = RECEIVING;
             }
             }
             else
             else
             {
             {
                 canvas_draw_str(canvas, 0, 30, "Failed.");
                 canvas_draw_str(canvas, 0, 30, "Failed.");
+                fhttp.state = ISSUE;
             }
             }
 
 
             sent_http_request = true;
             sent_http_request = true;
@@ -163,40 +215,7 @@ void web_crawler_view_draw_callback(Canvas *canvas, void *context)
             }
             }
             else
             else
             {
             {
-                if (fhttp.state == ISSUE)
-                {
-                    if (strstr(fhttp.last_response, "[ERROR] Not connected to Wifi. Failed to reconnect.") != NULL)
-                    {
-                        canvas_draw_str(canvas, 0, 10, "[ERROR] Not connected to Wifi.");
-                        canvas_draw_str(canvas, 0, 50, "Update your WiFi settings.");
-                        canvas_draw_str(canvas, 0, 60, "Press BACK to return.");
-                    }
-                    else if (strstr(fhttp.last_response, "[ERROR] Failed to connect to Wifi.") != NULL)
-                    {
-                        canvas_draw_str(canvas, 0, 10, "[ERROR] Not connected to Wifi.");
-                        canvas_draw_str(canvas, 0, 50, "Update your WiFi settings.");
-                        canvas_draw_str(canvas, 0, 60, "Press BACK to return.");
-                    }
-                    else if (strstr(fhttp.last_response, "[ERROR] GET request failed with error: connection refused") != NULL)
-                    {
-                        canvas_draw_str(canvas, 0, 10, "[ERROR] Connection refused.");
-                        canvas_draw_str(canvas, 0, 50, "Choose another URL.");
-                        canvas_draw_str(canvas, 0, 60, "Press BACK to return.");
-                    }
-                    else
-                    {
-                        canvas_draw_str(canvas, 0, 10, "[ERROR] Failed to sync data.");
-                        canvas_draw_str(canvas, 0, 30, "If this is your third attempt,");
-                        canvas_draw_str(canvas, 0, 40, "it's likely your URL is not");
-                        canvas_draw_str(canvas, 0, 50, "compabilbe or correct.");
-                        canvas_draw_str(canvas, 0, 60, "Press BACK to return.");
-                    }
-                }
-                else
-                {
-                    canvas_draw_str(canvas, 0, 10, "HTTP request failed.");
-                    canvas_draw_str(canvas, 0, 20, "Press BACK to return.");
-                }
+                web_crawler_draw_error(canvas);
                 get_success = false;
                 get_success = false;
             }
             }
         }
         }

+ 2 - 0
callback/web_crawler_callback.h

@@ -7,6 +7,8 @@ extern bool sent_http_request;
 extern bool get_success;
 extern bool get_success;
 extern bool already_success;
 extern bool already_success;
 
 
+void web_crawler_draw_error(Canvas *canvas);
+
 void web_crawler_http_method_change(VariableItem *item);
 void web_crawler_http_method_change(VariableItem *item);
 
 
 void web_crawler_view_draw_callback(Canvas *canvas, void *context);
 void web_crawler_view_draw_callback(Canvas *canvas, void *context);