flip_store_free.h 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. #ifndef FLIP_STORE_FREE_H
  2. #define FLIP_STORE_FREE_H
  3. // Function to free the resources used by FlipStoreApp
  4. static void flip_store_app_free(FlipStoreApp *app)
  5. {
  6. if (!app)
  7. {
  8. FURI_LOG_E(TAG, "FlipStoreApp is NULL");
  9. return;
  10. }
  11. if (!flipper_http_disconnect_wifi())
  12. {
  13. FURI_LOG_E(TAG, "Failed to disconnect from wifi");
  14. }
  15. // Free View(s)
  16. if (app->view_main)
  17. {
  18. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewMain);
  19. view_free(app->view_main);
  20. }
  21. if (app->view_app_info)
  22. {
  23. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppInfo);
  24. view_free(app->view_app_info);
  25. }
  26. // Free Submenu(s)
  27. if (app->submenu)
  28. {
  29. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewSubmenu);
  30. submenu_free(app->submenu);
  31. }
  32. if (app->submenu_app_list)
  33. {
  34. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppList);
  35. submenu_free(app->submenu_app_list);
  36. }
  37. // Free Widget(s)
  38. if (app->widget)
  39. {
  40. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAbout);
  41. widget_free(app->widget);
  42. }
  43. // Free Variable Item List(s)
  44. if (app->variable_item_list)
  45. {
  46. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewSettings);
  47. variable_item_list_free(app->variable_item_list);
  48. }
  49. // Free Text Input(s)
  50. if (app->uart_text_input_ssid)
  51. {
  52. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewTextInputSSID);
  53. uart_text_input_free(app->uart_text_input_ssid);
  54. }
  55. if (app->uart_text_input_pass)
  56. {
  57. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewTextInputPass);
  58. uart_text_input_free(app->uart_text_input_pass);
  59. }
  60. // Free popup
  61. if (app->popup)
  62. {
  63. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewPopup);
  64. popup_free(app->popup);
  65. }
  66. // Free dialog
  67. if (app->dialog_delete)
  68. {
  69. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppDelete);
  70. dialog_ex_free(app->dialog_delete);
  71. }
  72. // deinitalize flipper http
  73. flipper_http_deinit();
  74. // free the view dispatcher
  75. view_dispatcher_free(app->view_dispatcher);
  76. // close the gui
  77. furi_record_close(RECORD_GUI);
  78. // free the app
  79. free(app);
  80. }
  81. #endif // FLIP_STORE_FREE_H