flip_store.c 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. #include <flip_store.h>
  2. // Function to free the resources used by FlipStoreApp
  3. void flip_store_app_free(FlipStoreApp *app)
  4. {
  5. if (!app)
  6. {
  7. FURI_LOG_E(TAG, "FlipStoreApp is NULL");
  8. return;
  9. }
  10. // Free View(s)
  11. if (app->view_main)
  12. {
  13. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewMain);
  14. view_free(app->view_main);
  15. }
  16. if (app->view_app_info)
  17. {
  18. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppInfo);
  19. view_free(app->view_app_info);
  20. }
  21. if (app->view_firmware_download)
  22. {
  23. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewFirmwareDownload);
  24. view_free(app->view_firmware_download);
  25. }
  26. // Free Submenu(s)
  27. if (app->submenu_main)
  28. {
  29. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewSubmenu);
  30. submenu_free(app->submenu_main);
  31. }
  32. if (app->submenu_options)
  33. {
  34. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewSubmenuOptions);
  35. submenu_free(app->submenu_options);
  36. }
  37. if (app->submenu_app_list)
  38. {
  39. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppList);
  40. submenu_free(app->submenu_app_list);
  41. }
  42. if (app->submenu_firmwares)
  43. {
  44. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewFirmwares);
  45. submenu_free(app->submenu_firmwares);
  46. }
  47. if (app->submenu_app_list_bluetooth)
  48. {
  49. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppListBluetooth);
  50. submenu_free(app->submenu_app_list_bluetooth);
  51. }
  52. if (app->submenu_app_list_games)
  53. {
  54. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppListGames);
  55. submenu_free(app->submenu_app_list_games);
  56. }
  57. if (app->submenu_app_list_gpio)
  58. {
  59. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppListGPIO);
  60. submenu_free(app->submenu_app_list_gpio);
  61. }
  62. if (app->submenu_app_list_infrared)
  63. {
  64. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppListInfrared);
  65. submenu_free(app->submenu_app_list_infrared);
  66. }
  67. if (app->submenu_app_list_ibutton)
  68. {
  69. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppListiButton);
  70. submenu_free(app->submenu_app_list_ibutton);
  71. }
  72. if (app->submenu_app_list_media)
  73. {
  74. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppListMedia);
  75. submenu_free(app->submenu_app_list_media);
  76. }
  77. if (app->submenu_app_list_nfc)
  78. {
  79. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppListNFC);
  80. submenu_free(app->submenu_app_list_nfc);
  81. }
  82. if (app->submenu_app_list_rfid)
  83. {
  84. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppListRFID);
  85. submenu_free(app->submenu_app_list_rfid);
  86. }
  87. if (app->submenu_app_list_subghz)
  88. {
  89. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppListSubGHz);
  90. submenu_free(app->submenu_app_list_subghz);
  91. }
  92. if (app->submenu_app_list_tools)
  93. {
  94. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppListTools);
  95. submenu_free(app->submenu_app_list_tools);
  96. }
  97. if (app->submenu_app_list_usb)
  98. {
  99. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppListUSB);
  100. submenu_free(app->submenu_app_list_usb);
  101. }
  102. // Free Widget(s)
  103. if (app->widget)
  104. {
  105. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAbout);
  106. widget_free(app->widget);
  107. }
  108. // Free Variable Item List(s)
  109. if (app->variable_item_list)
  110. {
  111. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewSettings);
  112. variable_item_list_free(app->variable_item_list);
  113. }
  114. // Free Text Input(s)
  115. if (app->uart_text_input_ssid)
  116. {
  117. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewTextInputSSID);
  118. uart_text_input_free(app->uart_text_input_ssid);
  119. }
  120. if (app->uart_text_input_pass)
  121. {
  122. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewTextInputPass);
  123. uart_text_input_free(app->uart_text_input_pass);
  124. }
  125. // Free popup
  126. if (app->popup)
  127. {
  128. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewPopup);
  129. popup_free(app->popup);
  130. }
  131. // Free dialog
  132. if (app->dialog_delete)
  133. {
  134. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppDelete);
  135. dialog_ex_free(app->dialog_delete);
  136. }
  137. if (app->dialog_firmware)
  138. {
  139. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewFirmwareDialog);
  140. dialog_ex_free(app->dialog_firmware);
  141. }
  142. // deinitalize flipper http
  143. flipper_http_deinit();
  144. // free the view dispatcher
  145. view_dispatcher_free(app->view_dispatcher);
  146. // close the gui
  147. furi_record_close(RECORD_GUI);
  148. // free the app
  149. free(app);
  150. }
  151. void flip_store_request_error(Canvas *canvas)
  152. {
  153. if (fhttp.last_response != NULL)
  154. {
  155. if (strstr(fhttp.last_response, "[ERROR] Not connected to Wifi. Failed to reconnect.") != NULL)
  156. {
  157. canvas_clear(canvas);
  158. canvas_draw_str(canvas, 0, 10, "[ERROR] Not connected to Wifi.");
  159. canvas_draw_str(canvas, 0, 50, "Update your WiFi settings.");
  160. canvas_draw_str(canvas, 0, 60, "Press BACK to return.");
  161. }
  162. else if (strstr(fhttp.last_response, "[ERROR] Failed to connect to Wifi.") != NULL)
  163. {
  164. canvas_clear(canvas);
  165. canvas_draw_str(canvas, 0, 10, "[ERROR] Not connected to Wifi.");
  166. canvas_draw_str(canvas, 0, 50, "Update your WiFi settings.");
  167. canvas_draw_str(canvas, 0, 60, "Press BACK to return.");
  168. }
  169. else
  170. {
  171. FURI_LOG_E(TAG, "Received an error: %s", fhttp.last_response);
  172. canvas_draw_str(canvas, 0, 42, "Unusual error...");
  173. canvas_draw_str(canvas, 0, 50, "Update your WiFi settings.");
  174. canvas_draw_str(canvas, 0, 60, "Press BACK to return.");
  175. }
  176. }
  177. else
  178. {
  179. canvas_clear(canvas);
  180. canvas_draw_str(canvas, 0, 10, "[ERROR] Unknown error.");
  181. canvas_draw_str(canvas, 0, 50, "Update your WiFi settings.");
  182. canvas_draw_str(canvas, 0, 60, "Press BACK to return.");
  183. }
  184. }