diff --git a/applications/plugins/namechanger/namechanger.c b/applications/plugins/namechanger/namechanger.c index 284fd2eb507..354952182b0 100644 --- a/applications/plugins/namechanger/namechanger.c +++ b/applications/plugins/namechanger/namechanger.c @@ -16,172 +16,8 @@ bool namechanger_back_event_callback(void* context) { return scene_manager_handle_back_event(namechanger->scene_manager); } -bool namechanger_make_app_folder(NameChanger* namechanger) { - bool created = false; - FURI_LOG_I(TAG, "folder1"); - - FuriString* folderpath = furi_string_alloc(); - furi_string_set(folderpath, "/ext/dolphin"); - FURI_LOG_I(TAG, "folder2"); - - //Make dir if doesn't exist - if(!storage_simply_mkdir(namechanger->storage, furi_string_get_cstr(folderpath))) { - FURI_LOG_I(TAG, "folder3"); - furi_string_set_str(namechanger->error, "Cannot create\napp folder."); - } else { - FURI_LOG_I(TAG, "folder4"); - created = true; - } - FURI_LOG_I(TAG, "folder5"); - furi_string_free(folderpath); - FURI_LOG_I(TAG, "folder6"); - return created; -} - -bool namechanger_name_read_write(NameChanger* namechanger, char* name, uint8_t mode) { - FuriString* file_path = furi_string_alloc(); - furi_string_set(file_path, "/ext/dolphin/name.txt"); - FURI_LOG_I(TAG, "name1"); - - bool result = false; - - if(mode == 2) { - FURI_LOG_I(TAG, "name2"); - UNUSED(name); - FlipperFormat* file = flipper_format_file_alloc(namechanger->storage); - //read - FuriString* data = furi_string_alloc(); - FURI_LOG_I(TAG, "name3"); - - do { - FURI_LOG_I(TAG, "name4"); - if(!flipper_format_file_open_existing(file, furi_string_get_cstr(file_path))) { - break; - } - FURI_LOG_I(TAG, "name4a"); - - // header - uint32_t version; - - if(!flipper_format_read_header(file, data, &version)) { - break; - } - FURI_LOG_I(TAG, "name4b"); - - if(furi_string_cmp_str(data, NAMECHANGER_HEADER) != 0) { - break; - } - FURI_LOG_I(TAG, "name4c"); - - if(version != 1) { - break; - } - FURI_LOG_I(TAG, "name4d"); - - // get Name - if(!flipper_format_read_string(file, "Name", data)) { - break; - } - FURI_LOG_I(TAG, "name4e"); - - result = true; - FURI_LOG_I(TAG, "name5"); - } while(false); - - flipper_format_free(file); - FURI_LOG_I(TAG, "name6"); - - if(!result) { - FURI_LOG_I(TAG, "name7"); - FURI_LOG_E(TAG, "Cannot load data from file."); - namechanger_text_store_set(namechanger, "%s", furi_hal_version_get_name_ptr()); - } else { - FURI_LOG_I(TAG, "name8"); - furi_string_trim(data); - - if(!furi_string_size(data)) { - FURI_LOG_I(TAG, "name9"); - namechanger_text_store_set(namechanger, "%s", furi_hal_version_get_name_ptr()); - } else { - FURI_LOG_I(TAG, "name10"); - char newname[8]; - snprintf(newname, 8, "%s", furi_string_get_cstr(data)); - namechanger_text_store_set(namechanger, "%s", newname); - } - } - FURI_LOG_I(TAG, "name11"); - - furi_string_free(data); - } else if(mode == 3) { - FURI_LOG_I(TAG, "name12"); - //save - FlipperFormat* file = flipper_format_file_alloc(namechanger->storage); - - do { - FURI_LOG_I(TAG, "name13"); - // Open file for write - if(!flipper_format_file_open_always(file, furi_string_get_cstr(file_path))) { - break; - } - - // Write header - if(!flipper_format_write_header_cstr(file, NAMECHANGER_HEADER, 1)) { - break; - } - - // Write comments - if(!flipper_format_write_comment_cstr( - file, "Changing the value below will change your FlipperZero device name.")) { - break; - } - - if(!flipper_format_write_comment_cstr( - file, - "Note: This is limited to 8 characters using the following: a-z, A-Z, 0-9, and _")) { - break; - } - - if(!flipper_format_write_comment_cstr( - file, "It cannot contain any other characters.")) { - break; - } - - //If name is eraseerase (set by Revert) - then don't write any name - //otherwise, write name as set in the variable - if(strcmp(name, "eraseerase") == 0) { - if(!flipper_format_write_string_cstr(file, "Name", "")) { - break; - } - } else { - if(!flipper_format_write_string_cstr(file, "Name", name)) { - break; - } - } - - FURI_LOG_I(TAG, "name14"); - result = true; - } while(false); - - flipper_format_free(file); - FURI_LOG_I(TAG, "name15"); - - if(!result) { - FURI_LOG_I(TAG, "name16"); - FURI_LOG_E(TAG, "Cannot save name file."); - furi_string_set_str(namechanger->error, "Cannot save\nname file."); - } - } else { - FURI_LOG_I(TAG, "name17"); - FURI_LOG_E(TAG, "Something broke."); - furi_string_set_str(namechanger->error, "Something broke."); - } - FURI_LOG_I(TAG, "name18"); - - return result; -} - NameChanger* namechanger_alloc() { - NameChanger* namechanger = malloc(sizeof(namechanger)); + NameChanger* namechanger = malloc(sizeof(NameChanger)); namechanger->scene_manager = scene_manager_alloc(&namechanger_scene_handlers, namechanger); @@ -236,8 +72,6 @@ void namechanger_free(NameChanger* namechanger) { view_dispatcher_free(namechanger->view_dispatcher); scene_manager_free(namechanger->scene_manager); - furi_string_free(namechanger->error); - furi_record_close(RECORD_STORAGE); furi_record_close(RECORD_GUI); @@ -254,22 +88,70 @@ void namechanger_text_store_set(NameChanger* namechanger, const char* text, ...) va_end(args); } -void namechanger_text_store_clear(NameChanger* namechanger) { - memset(namechanger->text_store, 0, NAMECHANGER_TEXT_STORE_SIZE); -} - int32_t namechanger_app() { NameChanger* namechanger = namechanger_alloc(); + + view_dispatcher_attach_to_gui(namechanger->view_dispatcher, namechanger->gui, ViewDispatcherTypeFullscreen); + scene_manager_next_scene(namechanger->scene_manager, NameChangerSceneStart); + + view_dispatcher_run(namechanger->view_dispatcher); + + namechanger_free(namechanger); + return 0; +} - namechanger->error = furi_string_alloc(); - furi_string_set(namechanger->error, "Default"); - - view_dispatcher_attach_to_gui( - namechanger->view_dispatcher, namechanger->gui, ViewDispatcherTypeFullscreen); - scene_manager_next_scene(namechanger->scene_manager, NameChangerSceneStart); +bool namechanger_name_write(NameChanger* namechanger, char* name) { + FuriString* file_path = furi_string_alloc(); + furi_string_set(file_path, "/ext/dolphin/name.txt"); - view_dispatcher_run(namechanger->view_dispatcher); + bool result = false; + + //If name is not "eraseerase" (set by Revert) then write name to file + //otherwise, remove name.txt + + if(strcmp(name, "eraseerase") != 0) { + //save + FlipperFormat* file = flipper_format_file_alloc(namechanger->storage); + + do { + // Open file for write + if(!flipper_format_file_open_always(file, furi_string_get_cstr(file_path))) { + break; + } + + // Write header + if(!flipper_format_write_header_cstr(file, NAMECHANGER_HEADER, 1)) { + break; + } + + // Write comments + if(!flipper_format_write_comment_cstr(file, "Changing the value below will change your FlipperZero device name.")) { + break; + } + + if(!flipper_format_write_comment_cstr(file, "Note: This is limited to 8 characters using the following: a-z, A-Z, 0-9, and _")) { + break; + } + + if(!flipper_format_write_comment_cstr(file, "It cannot contain any other characters.")) { + break; + } + + if(!flipper_format_write_string_cstr(file, "Name", name)) { + break; + } + + result = true; + } while(false); + + flipper_format_free(file); + + if(!result) { + FURI_LOG_E(TAG, "Cannot save name file."); + } + } else { + result = storage_simply_remove(namechanger->storage, furi_string_get_cstr(file_path)); + } - namechanger_free(namechanger); - return 0; + return result; } \ No newline at end of file diff --git a/applications/plugins/namechanger/namechanger.h b/applications/plugins/namechanger/namechanger.h index 9500c1c178c..e3355db1d4b 100644 --- a/applications/plugins/namechanger/namechanger.h +++ b/applications/plugins/namechanger/namechanger.h @@ -30,7 +30,6 @@ typedef struct { Storage* storage; char text_store[NAMECHANGER_TEXT_STORE_SIZE + 1]; - FuriString* error; Submenu* submenu; TextInput* text_input; @@ -46,6 +45,5 @@ typedef enum { } NameChangerView; bool namechanger_make_app_folder(NameChanger* namechanger); -bool namechanger_name_read_write(NameChanger* namechanger, char* name, uint8_t mode); +bool namechanger_name_write(NameChanger* namechanger, char* name); void namechanger_text_store_set(NameChanger* namechanger, const char* text, ...); -void namechanger_text_store_clear(NameChanger* namechanger); diff --git a/applications/plugins/namechanger/namechanger_custom_event.h b/applications/plugins/namechanger/namechanger_custom_event.h index 61418642f6b..3485c870bed 100644 --- a/applications/plugins/namechanger/namechanger_custom_event.h +++ b/applications/plugins/namechanger/namechanger_custom_event.h @@ -3,5 +3,4 @@ enum NameChangerCustomEvent { NameChangerCustomEventBack, NameChangerCustomEventTextEditResult, - NameChangerCustomEventError, }; diff --git a/applications/plugins/namechanger/scenes/namechanger_scene_change.c b/applications/plugins/namechanger/scenes/namechanger_scene_change.c index 08150a1bc9e..54b30bf2a6b 100644 --- a/applications/plugins/namechanger/scenes/namechanger_scene_change.c +++ b/applications/plugins/namechanger/scenes/namechanger_scene_change.c @@ -11,22 +11,19 @@ void namechanger_scene_change_on_enter(void* context) { NameChanger* namechanger = context; TextInput* text_input = namechanger->text_input; - if(namechanger_name_read_write(namechanger, NULL, 2)) { - text_input_set_header_text(text_input, "Set Flipper Name"); - - text_input_set_result_callback( - text_input, - namechanger_scene_change_text_input_callback, - namechanger, - namechanger->text_store, - NAMECHANGER_TEXT_STORE_SIZE, - true); - - view_dispatcher_switch_to_view(namechanger->view_dispatcher, NameChangerViewTextInput); - } else { - view_dispatcher_send_custom_event( - namechanger->view_dispatcher, NameChangerCustomEventError); - } + namechanger_text_store_set(namechanger, "%s", furi_hal_version_get_name_ptr()); + + text_input_set_header_text(text_input, "Set Flipper Name"); + + text_input_set_result_callback( + text_input, + namechanger_scene_change_text_input_callback, + namechanger, + namechanger->text_store, + NAMECHANGER_TEXT_STORE_SIZE, + true); + + view_dispatcher_switch_to_view(namechanger->view_dispatcher, NameChangerViewTextInput); } bool namechanger_scene_change_on_event(void* context, SceneManagerEvent event) { @@ -36,21 +33,13 @@ bool namechanger_scene_change_on_event(void* context, SceneManagerEvent event) { if(event.type == SceneManagerEventTypeCustom) { consumed = true; if(event.event == NameChangerCustomEventTextEditResult) { - if(namechanger_make_app_folder(namechanger)) { - if(namechanger_name_read_write(namechanger, namechanger->text_store, 3)) { - scene_manager_next_scene( - namechanger->scene_manager, NameChangerSceneChangeSuccess); - } else { - scene_manager_search_and_switch_to_previous_scene( - namechanger->scene_manager, NameChangerSceneError); - } - } else { - scene_manager_search_and_switch_to_previous_scene( - namechanger->scene_manager, NameChangerSceneError); - } - } else if(event.event == NameChangerCustomEventError) { - scene_manager_search_and_switch_to_previous_scene( - namechanger->scene_manager, NameChangerSceneError); + if(namechanger_name_write(namechanger, namechanger->text_store)) { + scene_manager_next_scene(namechanger->scene_manager, NameChangerSceneChangeSuccess); + } else { + scene_manager_search_and_switch_to_previous_scene(namechanger->scene_manager, NameChangerSceneStart); + } + } else { + scene_manager_search_and_switch_to_previous_scene(namechanger->scene_manager, NameChangerSceneStart); } } return consumed; diff --git a/applications/plugins/namechanger/scenes/namechanger_scene_config.h b/applications/plugins/namechanger/scenes/namechanger_scene_config.h index 26236a057d6..41bbaef6b9e 100644 --- a/applications/plugins/namechanger/scenes/namechanger_scene_config.h +++ b/applications/plugins/namechanger/scenes/namechanger_scene_config.h @@ -2,5 +2,4 @@ ADD_SCENE(namechanger, start, Start) ADD_SCENE(namechanger, change, Change) ADD_SCENE(namechanger, change_success, ChangeSuccess) ADD_SCENE(namechanger, revert, Revert) -ADD_SCENE(namechanger, revert_success, RevertSuccess) -ADD_SCENE(namechanger, error, Error) \ No newline at end of file +ADD_SCENE(namechanger, revert_success, RevertSuccess) \ No newline at end of file diff --git a/applications/plugins/namechanger/scenes/namechanger_scene_error.c b/applications/plugins/namechanger/scenes/namechanger_scene_error.c deleted file mode 100644 index 3fe2e7276b8..00000000000 --- a/applications/plugins/namechanger/scenes/namechanger_scene_error.c +++ /dev/null @@ -1,49 +0,0 @@ -#include "../namechanger.h" - -static void namechanger_scene_error_popup_callback(void* context) { - NameChanger* namechanger = context; - view_dispatcher_send_custom_event(namechanger->view_dispatcher, NameChangerCustomEventBack); -} - -void namechanger_scene_error_on_enter(void* context) { - NameChanger* namechanger = context; - Popup* popup = namechanger->popup; - - popup_set_icon(popup, 60, 12, &I_Cry_dolph_55x52); - popup_set_header(popup, "Error", 5, 7, AlignLeft, AlignTop); - - popup_set_text(popup, furi_string_get_cstr(namechanger->error), 5, 20, AlignLeft, AlignTop); - - popup_set_callback(popup, namechanger_scene_error_popup_callback); - popup_set_context(popup, namechanger); - popup_set_timeout(popup, 10000); - popup_enable_timeout(popup); - - view_dispatcher_switch_to_view(namechanger->view_dispatcher, NameChangerViewPopup); -} - -bool namechanger_scene_error_on_event(void* context, SceneManagerEvent event) { - NameChanger* namechanger = context; - bool consumed = false; - - if(event.type == SceneManagerEventTypeCustom) { - consumed = true; - if(event.event == NameChangerCustomEventBack) { - view_dispatcher_stop(namechanger->view_dispatcher); - } - } - - return consumed; -} - -void namechanger_scene_error_on_exit(void* context) { - NameChanger* namechanger = context; - Popup* popup = namechanger->popup; - - popup_set_text(popup, NULL, 0, 0, AlignCenter, AlignTop); - popup_set_icon(popup, 0, 0, NULL); - - popup_disable_timeout(popup); - popup_set_context(popup, NULL); - popup_set_callback(popup, NULL); -} diff --git a/applications/plugins/namechanger/scenes/namechanger_scene_revert.c b/applications/plugins/namechanger/scenes/namechanger_scene_revert.c index b1ab3d75a5e..f030f8f8f18 100644 --- a/applications/plugins/namechanger/scenes/namechanger_scene_revert.c +++ b/applications/plugins/namechanger/scenes/namechanger_scene_revert.c @@ -3,9 +3,7 @@ static void namechanger_scene_revert_widget_callback(GuiButtonType result, InputType type, void* context) { NameChanger* namechanger = context; - FURI_LOG_I(TAG, "revert1"); if(type == InputTypeShort) { - FURI_LOG_I(TAG, "revert2"); view_dispatcher_send_custom_event(namechanger->view_dispatcher, result); } } @@ -13,56 +11,44 @@ static void void namechanger_scene_revert_on_enter(void* context) { NameChanger* namechanger = context; Widget* widget = namechanger->widget; - FURI_LOG_I(TAG, "revert3"); widget_add_text_box_element( widget, 0, 0, 128, 25, AlignCenter, AlignCenter, "\e#Revert Name?\e#", false); widget_add_icon_element(widget, 48, 20, &I_MarioBlock); widget_add_button_element( widget, GuiButtonTypeLeft, "Cancel", namechanger_scene_revert_widget_callback, namechanger); - FURI_LOG_I(TAG, "revert4"); widget_add_button_element( widget, GuiButtonTypeRight, "Revert", namechanger_scene_revert_widget_callback, namechanger); - FURI_LOG_I(TAG, "revert5"); view_dispatcher_switch_to_view(namechanger->view_dispatcher, NameChangerViewWidget); } bool namechanger_scene_revert_on_event(void* context, SceneManagerEvent event) { NameChanger* namechanger = context; bool consumed = false; - FURI_LOG_I(TAG, "revert6"); if(event.type == SceneManagerEventTypeBack) { consumed = true; - FURI_LOG_I(TAG, "revert7"); } else if(event.type == SceneManagerEventTypeCustom) { consumed = true; - FURI_LOG_I(TAG, "revert8"); if(event.event == GuiButtonTypeRight) { - FURI_LOG_I(TAG, "revert9"); - if(namechanger_name_read_write(namechanger, "eraseerase", 3)) { - FURI_LOG_I(TAG, "revert10"); + if(namechanger_name_write(namechanger, "eraseerase")) { scene_manager_next_scene( namechanger->scene_manager, NameChangerSceneRevertSuccess); } else { - FURI_LOG_I(TAG, "revert11"); scene_manager_search_and_switch_to_previous_scene( - namechanger->scene_manager, NameChangerSceneError); + namechanger->scene_manager, NameChangerSceneStart); } } else if(event.event == GuiButtonTypeLeft) { - FURI_LOG_I(TAG, "revert12"); scene_manager_search_and_switch_to_previous_scene( namechanger->scene_manager, NameChangerSceneStart); } } - FURI_LOG_I(TAG, "revert13"); return consumed; } void namechanger_scene_revert_on_exit(void* context) { NameChanger* namechanger = context; - FURI_LOG_I(TAG, "revert14"); widget_reset(namechanger->widget); } diff --git a/applications/services/namechangersrv/application.fam b/applications/services/namechangersrv/application.fam index 5b64db60725..b4bace40d25 100644 --- a/applications/services/namechangersrv/application.fam +++ b/applications/services/namechangersrv/application.fam @@ -3,5 +3,5 @@ App( apptype=FlipperAppType.STARTUP, entry_point="namechanger_on_system_start", requires=["storage"], - order=130, + order=1000, ) \ No newline at end of file diff --git a/applications/services/namechangersrv/namechangersrv.c b/applications/services/namechangersrv/namechangersrv.c index d05c2cdc50f..ca53e21290d 100644 --- a/applications/services/namechangersrv/namechangersrv.c +++ b/applications/services/namechangersrv/namechangersrv.c @@ -10,171 +10,153 @@ void namechanger_on_system_start() { FuriString* NAMEHEADER; NAMEHEADER = furi_string_alloc_set("Flipper Name File"); - FuriString* folderpath; - folderpath = furi_string_alloc_set("/ext/dolphin"); - FuriString* filepath; filepath = furi_string_alloc_set("/ext/dolphin/name.txt"); - //Make dir if doesn't exist - if(storage_simply_mkdir(storage, furi_string_get_cstr(folderpath))) { - bool result = false; - - FuriString* data; - data = furi_string_alloc(); - - do { - if(!flipper_format_file_open_existing(file, furi_string_get_cstr(filepath))) { - break; - } - - // header - uint32_t version; - - if(!flipper_format_read_header(file, data, &version)) { - break; - } - - if(furi_string_cmp_str(data, furi_string_get_cstr(NAMEHEADER)) != 0) { - break; - } - - if(version != 1) { - break; - } - - // get Name - if(!flipper_format_read_string(file, "Name", data)) { - break; - } - - result = true; - } while(false); - - flipper_format_free(file); - - if(!result) { - //file not good - write new one - FlipperFormat* file = flipper_format_file_alloc(storage); - - bool res = false; - - FuriString* name; - name = furi_string_alloc_set(furi_hal_version_get_name_ptr()); - - do { - // Open file for write - if(!flipper_format_file_open_always(file, furi_string_get_cstr(filepath))) { - break; - } - - // Write header - if(!flipper_format_write_header_cstr(file, furi_string_get_cstr(NAMEHEADER), 1)) { - break; - } - - // Write comments - if(!flipper_format_write_comment_cstr( - file, - "Changing the value below will change your FlipperZero device name.")) { - break; - } - - if(!flipper_format_write_comment_cstr( - file, - "Note: This is limited to 8 characters using the following: a-z, A-Z, 0-9, and _")) { - break; - } - - if(!flipper_format_write_comment_cstr( - file, "It can contain other characters but use at your own risk.")) { - break; - } - - //Write name - if(!flipper_format_write_string_cstr(file, "Name", furi_string_get_cstr(name))) { - break; - } - - res = true; - } while(false); - - flipper_format_free(file); - - if(!res) { - FURI_LOG_E(TAG, "Save failed."); - } - - furi_string_free(name); - } else { - furi_string_trim(data); - FURI_LOG_I(TAG, "data: %s", furi_string_get_cstr(data)); - - if(!furi_string_size(data)) { - //Empty file - get default name and write to file. - FlipperFormat* file = flipper_format_file_alloc(storage); - - bool res = false; - - FuriString* name; - name = furi_string_alloc_set(furi_hal_version_get_name_ptr()); - - do { - // Open file for write - if(!flipper_format_file_open_always(file, furi_string_get_cstr(filepath))) { - break; - } - - // Write header - if(!flipper_format_write_header_cstr( - file, furi_string_get_cstr(NAMEHEADER), 1)) { - break; - } - - // Write comments - if(!flipper_format_write_comment_cstr( - file, - "Changing the value below will change your FlipperZero device name.")) { - break; - } - - if(!flipper_format_write_comment_cstr( - file, - "Note: This is limited to 8 characters using the following: a-z, A-Z, 0-9, and _")) { - break; - } - - if(!flipper_format_write_comment_cstr( - file, "It cannot contain any other characters.")) { - break; - } - - //Write name - if(!flipper_format_write_string_cstr( - file, "Name", furi_string_get_cstr(name))) { - break; - } - - res = true; - } while(false); - - flipper_format_free(file); - - if(!res) { - FURI_LOG_E(TAG, "Save failed."); - } - - furi_string_free(name); - } else { - //set name from file - furi_hal_version_set_custom_name(furi_string_get_cstr(data)); - } - } - - furi_string_free(data); - } + bool result = false; + + FuriString* data; + data = furi_string_alloc(); + + do { + if(!flipper_format_file_open_existing(file, furi_string_get_cstr(filepath))) { + break; + } + + // header + uint32_t version; + + if(!flipper_format_read_header(file, data, &version)) { + break; + } + + if(furi_string_cmp_str(data, furi_string_get_cstr(NAMEHEADER)) != 0) { + break; + } + + if(version != 1) { + break; + } + + // get Name + if(!flipper_format_read_string(file, "Name", data)) { + break; + } + + result = true; + } while(false); + + flipper_format_free(file); + + if(!result) { + //file not good - write new one + FlipperFormat* file = flipper_format_file_alloc(storage); + + bool res = false; + + do { + // Open file for write + if(!flipper_format_file_open_always(file, furi_string_get_cstr(filepath))) { + break; + } + + // Write header + if(!flipper_format_write_header_cstr(file, furi_string_get_cstr(NAMEHEADER), 1)) { + break; + } + + // Write comments + if(!flipper_format_write_comment_cstr( + file, + "Changing the value below will change your FlipperZero device name.")) { + break; + } + + if(!flipper_format_write_comment_cstr( + file, + "Note: This is limited to 8 characters using the following: a-z, A-Z, 0-9, and _")) { + break; + } + + if(!flipper_format_write_comment_cstr( + file, "It can contain other characters but use at your own risk.")) { + break; + } + + //Write name + if(!flipper_format_write_string_cstr(file, "Name", furi_hal_version_get_name_ptr())) { + break; + } + + res = true; + } while(false); + + flipper_format_free(file); + + if(!res) { + FURI_LOG_E(TAG, "Save failed."); + } + } else { + if(!furi_string_size(data)) { + //Empty file - get default name and write to file. + FlipperFormat* file = flipper_format_file_alloc(storage); + + bool res = false; + + do { + // Open file for write + if(!flipper_format_file_open_always(file, furi_string_get_cstr(filepath))) { + break; + } + + // Write header + if(!flipper_format_write_header_cstr( + file, furi_string_get_cstr(NAMEHEADER), 1)) { + break; + } + + // Write comments + if(!flipper_format_write_comment_cstr( + file, + "Changing the value below will change your FlipperZero device name.")) { + break; + } + + if(!flipper_format_write_comment_cstr( + file, + "Note: This is limited to 8 characters using the following: a-z, A-Z, 0-9, and _")) { + break; + } + + if(!flipper_format_write_comment_cstr( + file, "It cannot contain any other characters.")) { + break; + } + + //Write name + if(!flipper_format_write_string_cstr( + file, "Name", furi_hal_version_get_name_ptr())) { + break; + } + + res = true; + } while(false); + + flipper_format_free(file); + + if(!res) { + FURI_LOG_E(TAG, "Save failed."); + } + } else { + char newdata[9]; + snprintf(newdata, 9, "%s", furi_string_get_cstr(data)); + //set name from file + furi_hal_version_set_custom_name(newdata); + } + } + + furi_string_free(data); furi_string_free(filepath); - furi_string_free(folderpath); furi_record_close(RECORD_STORAGE); } \ No newline at end of file