#ifndef FLIP_STORE_FREE_H #define FLIP_STORE_FREE_H // Function to free the resources used by FlipStoreApp static void flip_store_app_free(FlipStoreApp *app) { if (!app) { FURI_LOG_E(TAG, "FlipStoreApp is NULL"); return; } if (!flipper_http_disconnect_wifi()) { FURI_LOG_E(TAG, "Failed to disconnect from wifi"); } // Free View(s) if (app->view_main) { view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewMain); view_free(app->view_main); } if (app->view_app_info) { view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppInfo); view_free(app->view_app_info); } // Free Submenu(s) if (app->submenu) { view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewSubmenu); submenu_free(app->submenu); } if (app->submenu_app_list) { view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppList); submenu_free(app->submenu_app_list); } if (app->submenu_app_list_bluetooth) { view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppListBluetooth); submenu_free(app->submenu_app_list_bluetooth); } if (app->submenu_app_list_games) { view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppListGames); submenu_free(app->submenu_app_list_games); } if (app->submenu_app_list_gpio) { view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppListGPIO); submenu_free(app->submenu_app_list_gpio); } if (app->submenu_app_list_infrared) { view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppListInfrared); submenu_free(app->submenu_app_list_infrared); } if (app->submenu_app_list_ibutton) { view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppListiButton); submenu_free(app->submenu_app_list_ibutton); } if (app->submenu_app_list_media) { view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppListMedia); submenu_free(app->submenu_app_list_media); } if (app->submenu_app_list_nfc) { view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppListNFC); submenu_free(app->submenu_app_list_nfc); } if (app->submenu_app_list_rfid) { view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppListRFID); submenu_free(app->submenu_app_list_rfid); } if (app->submenu_app_list_subghz) { view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppListSubGHz); submenu_free(app->submenu_app_list_subghz); } if (app->submenu_app_list_tools) { view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppListTools); submenu_free(app->submenu_app_list_tools); } if (app->submenu_app_list_usb) { view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppListUSB); submenu_free(app->submenu_app_list_usb); } // Free Widget(s) if (app->widget) { view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAbout); widget_free(app->widget); } // Free Variable Item List(s) if (app->variable_item_list) { view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewSettings); variable_item_list_free(app->variable_item_list); } // Free Text Input(s) if (app->uart_text_input_ssid) { view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewTextInputSSID); uart_text_input_free(app->uart_text_input_ssid); } if (app->uart_text_input_pass) { view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewTextInputPass); uart_text_input_free(app->uart_text_input_pass); } // Free popup if (app->popup) { view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewPopup); popup_free(app->popup); } // Free dialog if (app->dialog_delete) { view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppDelete); dialog_ex_free(app->dialog_delete); } // Free the flip catalog flip_catalog_free(); // deinitalize flipper http flipper_http_deinit(); // free the view dispatcher view_dispatcher_free(app->view_dispatcher); // close the gui furi_record_close(RECORD_GUI); // free the app free(app); } #endif // FLIP_STORE_FREE_H