diff --git a/applications/main/fap_loader/fap_loader_app.c b/applications/main/fap_loader/fap_loader_app.c index 6caaa9639..7d7755c75 100644 --- a/applications/main/fap_loader/fap_loader_app.c +++ b/applications/main/fap_loader/fap_loader_app.c @@ -10,6 +10,7 @@ #include #include #include +#include #define TAG "FapLoader" @@ -30,6 +31,17 @@ bool fap_loader_load_name_and_icon( Storage* storage, uint8_t** icon_ptr, FuriString* item_name) { + StorageData* storage_data; + if(storage_get_data(storage, path, &storage_data) == FSE_OK && storage_path_already_open(path, storage_data)) { + size_t offset = furi_string_search_rchar(path, '/'); + if(offset != FURI_STRING_FAILURE) { + furi_string_set_n(item_name, path, offset + 1, furi_string_size(path) - offset - 1); + } else { + furi_string_set(item_name, path); + } + return false; + } + FlipperApplication* app = flipper_application_alloc(storage, firmware_api_interface); FlipperApplicationPreloadStatus preload_res = @@ -46,6 +58,12 @@ bool fap_loader_load_name_and_icon( load_success = true; } else { FURI_LOG_E(TAG, "FAP Loader failed to preload %s", furi_string_get_cstr(path)); + size_t offset = furi_string_search_rchar(path, '/'); + if(offset != FURI_STRING_FAILURE) { + furi_string_set_n(item_name, path, offset + 1, furi_string_size(path) - offset - 1); + } else { + furi_string_set(item_name, path); + } load_success = false; } diff --git a/applications/main/xtreme_app/scenes/xtreme_app_scene_interface_mainmenu_add.c b/applications/main/xtreme_app/scenes/xtreme_app_scene_interface_mainmenu_add.c index cc866ce00..558be9e32 100644 --- a/applications/main/xtreme_app/scenes/xtreme_app_scene_interface_mainmenu_add.c +++ b/applications/main/xtreme_app/scenes/xtreme_app_scene_interface_mainmenu_add.c @@ -10,7 +10,6 @@ static bool xtreme_app_scene_interface_mainmenu_add_file_browser_callback( uint8_t** icon_ptr, FuriString* item_name) { XtremeApp* app = context; - if(furi_string_end_with(file_path, app->fap_name)) return false; Storage* storage = furi_record_open(RECORD_STORAGE); bool success = fap_loader_load_name_and_icon(file_path, storage, icon_ptr, item_name); furi_record_close(RECORD_STORAGE); diff --git a/applications/main/xtreme_app/xtreme_app.c b/applications/main/xtreme_app/xtreme_app.c index 005d4ece1..eabd25581 100644 --- a/applications/main/xtreme_app/xtreme_app.c +++ b/applications/main/xtreme_app/xtreme_app.c @@ -322,7 +322,6 @@ void xtreme_app_free(XtremeApp* app) { extern int32_t xtreme_app(void* p) { UNUSED(p); XtremeApp* app = xtreme_app_alloc(); - snprintf(app->fap_name, 32, "%s.fap", furi_thread_get_appid(furi_thread_get_current_id())); scene_manager_next_scene(app->scene_manager, XtremeAppSceneStart); view_dispatcher_run(app->view_dispatcher); xtreme_app_free(app); diff --git a/applications/main/xtreme_app/xtreme_app.h b/applications/main/xtreme_app/xtreme_app.h index 759afd769..a352d86ee 100644 --- a/applications/main/xtreme_app/xtreme_app.h +++ b/applications/main/xtreme_app/xtreme_app.h @@ -31,7 +31,6 @@ ARRAY_DEF(CharList, char*) typedef struct { - char fap_name[32]; Gui* gui; DialogsApp* dialogs; NotificationApp* notification;