From e67cdbdff8570da2ea9c8c0c11cf84c998aba382 Mon Sep 17 00:00:00 2001 From: Nikolay Minaylov Date: Thu, 14 Apr 2022 20:02:16 +0300 Subject: [PATCH] [FL-2433] Archive: Fix favourites rescan (#1112) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Archive: fix favourites rescan * Archive: fix favourites move Co-authored-by: あく --- applications/archive/helpers/archive_browser.c | 3 +-- applications/archive/helpers/archive_favorites.c | 8 ++++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/applications/archive/helpers/archive_browser.c b/applications/archive/helpers/archive_browser.c index 418fdb47..10f5ea3e 100644 --- a/applications/archive/helpers/archive_browser.c +++ b/applications/archive/helpers/archive_browser.c @@ -120,13 +120,12 @@ void archive_file_array_swap(ArchiveBrowserView* browser, int8_t dir) { ArchiveFile_t_clear(&temp); } else if(model->item_idx == array_size && dir > 0) { ArchiveFile_t_init(&temp); - files_array_pop_at(&temp, model->files, model->item_idx); + files_array_pop_at(&temp, model->files, 0); files_array_push_at(model->files, array_size, temp); ArchiveFile_t_clear(&temp); } else { files_array_swap_at(model->files, model->item_idx, swap_idx); } - return false; }); } diff --git a/applications/archive/helpers/archive_favorites.c b/applications/archive/helpers/archive_favorites.c index ef8f1b22..ac5b9d29 100644 --- a/applications/archive/helpers/archive_favorites.c +++ b/applications/archive/helpers/archive_favorites.c @@ -106,6 +106,8 @@ static bool archive_favourites_rescan() { if(file_exists) { storage_file_close(fav_item_file); archive_file_append(ARCHIVE_FAV_TEMP_PATH, "%s\n", string_get_cstr(buffer)); + } else { + storage_file_close(fav_item_file); } } } @@ -116,6 +118,7 @@ static bool archive_favourites_rescan() { storage_file_close(file); storage_common_remove(fs_api, ARCHIVE_FAV_PATH); storage_common_rename(fs_api, ARCHIVE_FAV_TEMP_PATH, ARCHIVE_FAV_PATH); + storage_common_remove(fs_api, ARCHIVE_FAV_TEMP_PATH); storage_file_free(file); storage_file_free(fav_item_file); @@ -163,10 +166,12 @@ bool archive_favorites_read(void* context) { bool file_exists = storage_file_open( fav_item_file, string_get_cstr(buffer), FSAM_READ, FSOM_OPEN_EXISTING); if(file_exists) { + storage_common_stat(fs_api, string_get_cstr(buffer), &file_info); storage_file_close(fav_item_file); archive_add_file_item(browser, &file_info, string_get_cstr(buffer)); file_count++; } else { + storage_file_close(fav_item_file); need_refresh = true; } } @@ -224,6 +229,7 @@ bool archive_favorites_delete(const char* format, ...) { storage_file_close(file); storage_common_remove(fs_api, ARCHIVE_FAV_PATH); storage_common_rename(fs_api, ARCHIVE_FAV_TEMP_PATH, ARCHIVE_FAV_PATH); + storage_common_remove(fs_api, ARCHIVE_FAV_TEMP_PATH); storage_file_free(file); furi_record_close("storage"); @@ -308,6 +314,7 @@ bool archive_favorites_rename(const char* src, const char* dst) { storage_file_close(file); storage_common_remove(fs_api, ARCHIVE_FAV_PATH); storage_common_rename(fs_api, ARCHIVE_FAV_TEMP_PATH, ARCHIVE_FAV_PATH); + storage_common_remove(fs_api, ARCHIVE_FAV_TEMP_PATH); storage_file_free(file); furi_record_close("storage"); @@ -335,6 +342,7 @@ void archive_favorites_save(void* context) { storage_common_remove(fs_api, ARCHIVE_FAV_PATH); storage_common_rename(fs_api, ARCHIVE_FAV_TEMP_PATH, ARCHIVE_FAV_PATH); + storage_common_remove(fs_api, ARCHIVE_FAV_TEMP_PATH); storage_file_free(file); furi_record_close("storage");