flip_store.c 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #include <flip_store.h>
  2. #include <apps/flip_store_apps.h>
  3. // Function to free the resources used by FlipStoreApp
  4. void flip_store_app_free(FlipStoreApp* app) {
  5. if(!app) {
  6. FURI_LOG_E(TAG, "FlipStoreApp is NULL");
  7. return;
  8. }
  9. // Free Widget(s)
  10. if(app->widget_result) {
  11. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewWidgetResult);
  12. widget_free(app->widget_result);
  13. }
  14. // Free View(s)
  15. if(app->view_loader) {
  16. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewLoader);
  17. flip_store_loader_free_model(app->view_loader);
  18. view_free(app->view_loader);
  19. }
  20. // Free Submenu(s)
  21. if(app->submenu_main) {
  22. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewSubmenu);
  23. submenu_free(app->submenu_main);
  24. }
  25. if(app->submenu_options) {
  26. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewSubmenuOptions);
  27. submenu_free(app->submenu_options);
  28. }
  29. if(app->submenu_app_list) {
  30. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppList);
  31. submenu_free(app->submenu_app_list);
  32. }
  33. if(app->submenu_firmwares) {
  34. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewFirmwares);
  35. submenu_free(app->submenu_firmwares);
  36. }
  37. if(app->submenu_vgm_firmwares) {
  38. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewVGMFirmwares);
  39. submenu_free(app->submenu_vgm_firmwares);
  40. }
  41. free_all_views(app, true);
  42. // free the view dispatcher
  43. if(app->view_dispatcher) view_dispatcher_free(app->view_dispatcher);
  44. // close the gui
  45. furi_record_close(RECORD_GUI);
  46. // free the app
  47. if(app) free(app);
  48. }