flip_downloader.c 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #include <flip_downloader.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. {
  6. if (!app)
  7. {
  8. FURI_LOG_E(TAG, "FlipStoreApp is NULL");
  9. return;
  10. }
  11. // Free Widget(s)
  12. if (app->widget_result)
  13. {
  14. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewWidgetResult);
  15. widget_free(app->widget_result);
  16. }
  17. // Free View(s)
  18. if (app->view_loader)
  19. {
  20. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewLoader);
  21. flip_store_loader_free_model(app->view_loader);
  22. view_free(app->view_loader);
  23. }
  24. // Free Submenu(s)
  25. if (app->submenu_main)
  26. {
  27. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewSubmenu);
  28. submenu_free(app->submenu_main);
  29. }
  30. if (app->submenu_options)
  31. {
  32. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewSubmenuOptions);
  33. submenu_free(app->submenu_options);
  34. }
  35. if (app->submenu_app_list)
  36. {
  37. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppList);
  38. submenu_free(app->submenu_app_list);
  39. }
  40. if (app->submenu_firmwares)
  41. {
  42. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewFirmwares);
  43. submenu_free(app->submenu_firmwares);
  44. }
  45. if (app->submenu_vgm_firmwares)
  46. {
  47. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewVGMFirmwares);
  48. submenu_free(app->submenu_vgm_firmwares);
  49. }
  50. free_all_views(app, true);
  51. // free the view dispatcher
  52. if (app->view_dispatcher)
  53. view_dispatcher_free(app->view_dispatcher);
  54. // close the gui
  55. furi_record_close(RECORD_GUI);
  56. // free the app
  57. if (app)
  58. free(app);
  59. }