From 00529b8fa6ef3e70e1b88f3da6ab04d3193153ca Mon Sep 17 00:00:00 2001 From: Marino Faggiana Date: Tue, 2 Jul 2024 14:58:58 +0200 Subject: [PATCH] restore maintain original filename (#2972) Signed-off-by: Marino Faggiana --- Nextcloud.xcodeproj/project.pbxproj | 8 ++++---- .../Advanced/File Name/NCFileNameModel.swift | 9 +++++++-- .../Advanced/File Name/NCFileNameView.swift | 20 +++++++++++++------ iOSClient/Settings/NCKeychain.swift | 12 +++++++++++ iOSClient/Utility/NCUtilityFileSystem.swift | 12 ++++++++++- 5 files changed, 48 insertions(+), 13 deletions(-) diff --git a/Nextcloud.xcodeproj/project.pbxproj b/Nextcloud.xcodeproj/project.pbxproj index 3f37692534..4fd9edeedf 100644 --- a/Nextcloud.xcodeproj/project.pbxproj +++ b/Nextcloud.xcodeproj/project.pbxproj @@ -5348,7 +5348,7 @@ CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 9; + CURRENT_PROJECT_VERSION = 0; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = NKUJUXUJ3B; ENABLE_STRICT_OBJC_MSGSEND = YES; @@ -5375,7 +5375,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 5.4.0; + MARKETING_VERSION = 5.4.1; ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = "-v"; OTHER_LDFLAGS = ""; @@ -5414,7 +5414,7 @@ CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 9; + CURRENT_PROJECT_VERSION = 0; DEVELOPMENT_TEAM = NKUJUXUJ3B; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; @@ -5438,7 +5438,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 5.4.0; + MARKETING_VERSION = 5.4.1; ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = "-v"; OTHER_LDFLAGS = ""; diff --git a/iOSClient/Settings/Advanced/File Name/NCFileNameModel.swift b/iOSClient/Settings/Advanced/File Name/NCFileNameModel.swift index 497ec5919f..1516dfa45f 100644 --- a/iOSClient/Settings/Advanced/File Name/NCFileNameModel.swift +++ b/iOSClient/Settings/Advanced/File Name/NCFileNameModel.swift @@ -33,9 +33,9 @@ class NCFileNameModel: ObservableObject, ViewOnAppearHandling { /// A shared global instance for managing application-wide settings. private let globalKey = NCGlobal.shared /// A boolean indicating whether to maintain the original file name. - @Published var maintainFilename: Bool = false + @Published var maintainFilenameOriginal: Bool = NCKeychain().fileNameOriginal /// A boolean indicating whether to specify a custom file name. - @Published var specifyFilename: Bool = false + @Published var addFileNameType: Bool = NCKeychain().fileNameType /// The changed file name. @Published var changedName: String = "" /// The complete new file name. @@ -63,6 +63,11 @@ class NCFileNameModel: ObservableObject, ViewOnAppearHandling { keychain.fileNameType = newValue } + /// Toggles maintain original asset filename. + func toggleMaintainFilenameOriginal(newValue: Bool) { + keychain.fileNameOriginal = newValue + } + /// Submits the changed file name. func submitChangedName() { let fileNameWithoutForbiddenChars = NCUtility().removeForbiddenCharacters(changedName) diff --git a/iOSClient/Settings/Advanced/File Name/NCFileNameView.swift b/iOSClient/Settings/Advanced/File Name/NCFileNameView.swift index 420e2fd4bc..f86993e338 100644 --- a/iOSClient/Settings/Advanced/File Name/NCFileNameView.swift +++ b/iOSClient/Settings/Advanced/File Name/NCFileNameView.swift @@ -30,23 +30,31 @@ struct NCFileNameView: View { Form { /// Specify Filename Section(header: Text(NSLocalizedString("_mode_filename_", comment: ""))) { + /// + Toggle(NSLocalizedString("_maintain_original_filename_", comment: ""), isOn: $model.maintainFilenameOriginal) + .font(.system(size: 16)) + .tint(Color(NCBrandColor.shared.brandElement)) + .onChange(of: model.maintainFilenameOriginal, perform: { newValue in + model.toggleMaintainFilenameOriginal(newValue: newValue) + model.getFileName() + }) /// Filename - if !model.maintainFilename { - Toggle(NSLocalizedString("_add_filenametype_", comment: ""), isOn: $model.specifyFilename) + if !model.maintainFilenameOriginal { + Toggle(NSLocalizedString("_add_filenametype_", comment: ""), isOn: $model.addFileNameType) .font(.system(size: 16)) .tint(Color(NCBrandColor.shared.brandElement)) - .onChange(of: model.specifyFilename, perform: { newValue in + .onChange(of: model.addFileNameType, perform: { newValue in model.toggleAddFilenameType(newValue: newValue) model.getFileName() }) } } .transition(.slide) - .animation(.easeInOut, value: model.maintainFilename) + .animation(.easeInOut, value: model.maintainFilenameOriginal) /// Filename Preview fileNamePreview - .animation(.easeInOut, value: model.specifyFilename) + .animation(.easeInOut, value: model.addFileNameType) } .navigationBarTitle(NSLocalizedString("_mode_filename_", comment: "")) .defaultViewModifier(model) @@ -56,7 +64,7 @@ struct NCFileNameView: View { @ViewBuilder var fileNamePreview: some View { - if !model.maintainFilename { + if !model.maintainFilenameOriginal { Section(content: { HStack { Text(NSLocalizedString("_filename_", comment: "")) diff --git a/iOSClient/Settings/NCKeychain.swift b/iOSClient/Settings/NCKeychain.swift index 0c3106f7a7..7d2e1d28d4 100644 --- a/iOSClient/Settings/NCKeychain.swift +++ b/iOSClient/Settings/NCKeychain.swift @@ -391,6 +391,18 @@ import KeychainAccess } } + var fileNameOriginal: Bool { + get { + if let value = try? keychain.get("fileNameOriginal"), let result = Bool(value) { + return result + } + return false + } + set { + keychain["fileNameOriginal"] = String(newValue) + } + } + var fileNameMask: String { get { if let value = try? keychain.get("fileNameMask") { diff --git a/iOSClient/Utility/NCUtilityFileSystem.swift b/iOSClient/Utility/NCUtilityFileSystem.swift index a4deddafb2..dd6baa28d6 100644 --- a/iOSClient/Utility/NCUtilityFileSystem.swift +++ b/iOSClient/Utility/NCUtilityFileSystem.swift @@ -430,11 +430,21 @@ class NCUtilityFileSystem: NSObject { func createFileName(_ fileName: String, fileDate: Date, fileType: PHAssetMediaType, notUseMask: Bool = false) -> String { var fileName = fileName let keychain = NCKeychain() - let addFileNameType: Bool = keychain.fileNameType + var addFileNameType: Bool = keychain.fileNameType + let useFileNameOriginal: Bool = keychain.fileNameOriginal var numberFileName: String = "" var fileNameType = "" let fileNameExt = (fileName as NSString).pathExtension.lowercased() + /// Original FileName + if useFileNameOriginal { + addFileNameType = false + if !notUseMask { + return fileName + } + } + + /// Get counter if fileName.count > 8 { let index = fileName.index(fileName.startIndex, offsetBy: 4) numberFileName = String(fileName[index..