flip_store_free.h 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  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. if (app->submenu_app_list_bluetooth)
  38. {
  39. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppListBluetooth);
  40. submenu_free(app->submenu_app_list_bluetooth);
  41. }
  42. if (app->submenu_app_list_games)
  43. {
  44. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppListGames);
  45. submenu_free(app->submenu_app_list_games);
  46. }
  47. if (app->submenu_app_list_gpio)
  48. {
  49. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppListGPIO);
  50. submenu_free(app->submenu_app_list_gpio);
  51. }
  52. if (app->submenu_app_list_infrared)
  53. {
  54. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppListInfrared);
  55. submenu_free(app->submenu_app_list_infrared);
  56. }
  57. if (app->submenu_app_list_ibutton)
  58. {
  59. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppListiButton);
  60. submenu_free(app->submenu_app_list_ibutton);
  61. }
  62. if (app->submenu_app_list_media)
  63. {
  64. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppListMedia);
  65. submenu_free(app->submenu_app_list_media);
  66. }
  67. if (app->submenu_app_list_nfc)
  68. {
  69. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppListNFC);
  70. submenu_free(app->submenu_app_list_nfc);
  71. }
  72. if (app->submenu_app_list_rfid)
  73. {
  74. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppListRFID);
  75. submenu_free(app->submenu_app_list_rfid);
  76. }
  77. if (app->submenu_app_list_subghz)
  78. {
  79. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppListSubGHz);
  80. submenu_free(app->submenu_app_list_subghz);
  81. }
  82. if (app->submenu_app_list_tools)
  83. {
  84. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppListTools);
  85. submenu_free(app->submenu_app_list_tools);
  86. }
  87. if (app->submenu_app_list_usb)
  88. {
  89. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppListUSB);
  90. submenu_free(app->submenu_app_list_usb);
  91. }
  92. // Free Widget(s)
  93. if (app->widget)
  94. {
  95. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAbout);
  96. widget_free(app->widget);
  97. }
  98. // Free Variable Item List(s)
  99. if (app->variable_item_list)
  100. {
  101. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewSettings);
  102. variable_item_list_free(app->variable_item_list);
  103. }
  104. // Free Text Input(s)
  105. if (app->uart_text_input_ssid)
  106. {
  107. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewTextInputSSID);
  108. uart_text_input_free(app->uart_text_input_ssid);
  109. }
  110. if (app->uart_text_input_pass)
  111. {
  112. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewTextInputPass);
  113. uart_text_input_free(app->uart_text_input_pass);
  114. }
  115. // Free popup
  116. if (app->popup)
  117. {
  118. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewPopup);
  119. popup_free(app->popup);
  120. }
  121. // Free dialog
  122. if (app->dialog_delete)
  123. {
  124. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppDelete);
  125. dialog_ex_free(app->dialog_delete);
  126. }
  127. // Free the flip catalog
  128. flip_catalog_free();
  129. // deinitalize flipper http
  130. flipper_http_deinit();
  131. // free the view dispatcher
  132. view_dispatcher_free(app->view_dispatcher);
  133. // close the gui
  134. furi_record_close(RECORD_GUI);
  135. // free the app
  136. free(app);
  137. }
  138. #endif // FLIP_STORE_FREE_H