From 2cbd058dc288fbb907f0fafd5df21d6ef2f08920 Mon Sep 17 00:00:00 2001 From: MX <10697207+xMasterX@users.noreply.github.com> Date: Fri, 14 Jun 2024 03:48:39 +0300 Subject: [PATCH] make NFC emulation loading from favourites faster --- .../helpers/protocol_support/nfc_protocol_support.c | 2 +- applications/main/nfc/nfc_app.c | 10 ++++++---- applications/main/nfc/nfc_app_i.h | 2 +- .../main/nfc/scenes/nfc_scene_restore_original.c | 2 +- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/applications/main/nfc/helpers/protocol_support/nfc_protocol_support.c b/applications/main/nfc/helpers/protocol_support/nfc_protocol_support.c index d7adf9d807..b05c31e47f 100644 --- a/applications/main/nfc/helpers/protocol_support/nfc_protocol_support.c +++ b/applications/main/nfc/helpers/protocol_support/nfc_protocol_support.c @@ -719,7 +719,7 @@ static bool nfc_protocol_support_scene_rpc_on_event(NfcApp* instance, SceneManag if(event.event == NfcCustomEventRpcLoadFile) { bool success = false; if(instance->rpc_state == NfcRpcStateIdle) { - if(nfc_load_file(instance, instance->file_path, false)) { + if(nfc_load_file(instance, instance->file_path, false, false)) { nfc_protocol_support_scene_rpc_setup_ui_and_emulate(instance); success = true; } diff --git a/applications/main/nfc/nfc_app.c b/applications/main/nfc/nfc_app.c index d0557de2af..48787c9046 100644 --- a/applications/main/nfc/nfc_app.c +++ b/applications/main/nfc/nfc_app.c @@ -340,12 +340,14 @@ bool nfc_save(NfcApp* instance) { return nfc_save_internal(instance, NFC_APP_EXTENSION); } -bool nfc_load_file(NfcApp* instance, FuriString* path, bool show_dialog) { +bool nfc_load_file(NfcApp* instance, FuriString* path, bool show_dialog, bool load_plugins) { furi_assert(instance); furi_assert(path); bool result = false; - nfc_supported_cards_load_cache(instance->nfc_supported_cards); + if(load_plugins) { + nfc_supported_cards_load_cache(instance->nfc_supported_cards); + } FuriString* load_path = furi_string_alloc(); if(nfc_has_shadow_file_internal(instance, path)) { //-V1051 @@ -414,7 +416,7 @@ bool nfc_load_from_file_select(NfcApp* instance) { if(!dialog_file_browser_show( instance->dialogs, instance->file_path, instance->file_path, &browser_options)) break; - success = nfc_load_file(instance, instance->file_path, true); + success = nfc_load_file(instance, instance->file_path, true, true); } while(!success); return success; @@ -507,7 +509,7 @@ int32_t nfc_app(void* p) { nfc->view_dispatcher, nfc->gui, ViewDispatcherTypeFullscreen); furi_string_set(nfc->file_path, args); - if(nfc_load_file(nfc, nfc->file_path, false)) { + if(nfc_load_file(nfc, nfc->file_path, false, false)) { nfc_show_initial_scene_for_device(nfc); } else { view_dispatcher_stop(nfc->view_dispatcher); diff --git a/applications/main/nfc/nfc_app_i.h b/applications/main/nfc/nfc_app_i.h index 4c8fba2f87..7a2dc35051 100644 --- a/applications/main/nfc/nfc_app_i.h +++ b/applications/main/nfc/nfc_app_i.h @@ -188,7 +188,7 @@ bool nfc_delete(NfcApp* instance); bool nfc_load_from_file_select(NfcApp* instance); -bool nfc_load_file(NfcApp* instance, FuriString* path, bool show_dialog); +bool nfc_load_file(NfcApp* instance, FuriString* path, bool show_dialog, bool load_plugins); bool nfc_save_file(NfcApp* instance, FuriString* path); diff --git a/applications/main/nfc/scenes/nfc_scene_restore_original.c b/applications/main/nfc/scenes/nfc_scene_restore_original.c index 3a47ce8c3a..395f83fd72 100644 --- a/applications/main/nfc/scenes/nfc_scene_restore_original.c +++ b/applications/main/nfc/scenes/nfc_scene_restore_original.c @@ -25,7 +25,7 @@ bool nfc_scene_restore_original_on_event(void* context, SceneManagerEvent event) if(event.type == SceneManagerEventTypeCustom) { if(event.event == NfcCustomEventViewExit) { - if(nfc_load_file(nfc, nfc->file_path, false)) { + if(nfc_load_file(nfc, nfc->file_path, false, false)) { consumed = scene_manager_search_and_switch_to_previous_scene( nfc->scene_manager, NfcSceneSavedMenu); } else {