Przeglądaj źródła

Fix file name not maintained (#2432)

* Fix file name being wrong

Signed-off-by: Milen Pivchev <milen.pivchev@gmail.com>

* Save with original filename

Signed-off-by: Milen Pivchev <milen.pivchev@gmail.com>

* Refactor

Signed-off-by: Milen Pivchev <milen.pivchev@gmail.com>

* Fix additional cases

Signed-off-by: Milen Pivchev <milen.pivchev@gmail.com>

* Replace more cases

Signed-off-by: Milen Pivchev <milen.pivchev@gmail.com>

* Add failsafe

Signed-off-by: Milen Pivchev <milen.pivchev@gmail.com>

* Fix lint

Signed-off-by: Milen Pivchev <milen.pivchev@gmail.com>

* Fix preview not working

Signed-off-by: Milen Pivchev <milen.pivchev@gmail.com>

* Fix multiple files not getting unique names

Signed-off-by: Milen Pivchev <milen.pivchev@gmail.com>

* Refactor

Signed-off-by: Milen Pivchev <milen.pivchev@gmail.com>

---------

Signed-off-by: Milen Pivchev <milen.pivchev@gmail.com>
Milen Pivchev 1 rok temu
rodzic
commit
03badd7a55

+ 16 - 0
Nextcloud.xcodeproj/project.pbxproj

@@ -75,6 +75,13 @@
 		AFD33240276A02C100F5AE02 /* UIApplication+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = AFD3323F276A02C000F5AE02 /* UIApplication+Extension.swift */; };
 		D575039F27146F93008DC9DC /* String+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7A0D1342591FBC5008F8A13 /* String+Extension.swift */; };
 		D5B6AA7827200C7200D49C24 /* NCActivityTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5B6AA7727200C7200D49C24 /* NCActivityTableViewCell.swift */; };
+		F343A4B32A1E01FF00DDA874 /* PHAsset+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = F343A4B22A1E01FF00DDA874 /* PHAsset+Extension.swift */; };
+		F343A4B42A1E084100DDA874 /* PHAsset+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = F343A4B22A1E01FF00DDA874 /* PHAsset+Extension.swift */; };
+		F343A4B52A1E084200DDA874 /* PHAsset+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = F343A4B22A1E01FF00DDA874 /* PHAsset+Extension.swift */; };
+		F343A4B62A1E084200DDA874 /* PHAsset+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = F343A4B22A1E01FF00DDA874 /* PHAsset+Extension.swift */; };
+		F343A4B72A1E084300DDA874 /* PHAsset+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = F343A4B22A1E01FF00DDA874 /* PHAsset+Extension.swift */; };
+		F343A4B82A1E084300DDA874 /* PHAsset+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = F343A4B22A1E01FF00DDA874 /* PHAsset+Extension.swift */; };
+		F343A4B92A1E084400DDA874 /* PHAsset+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = F343A4B22A1E01FF00DDA874 /* PHAsset+Extension.swift */; };
 		F700222C1EC479840080073F /* Custom.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F700222B1EC479840080073F /* Custom.xcassets */; };
 		F700222D1EC479840080073F /* Custom.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F700222B1EC479840080073F /* Custom.xcassets */; };
 		F700510122DF63AC003A3356 /* NCShare.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F700510022DF63AC003A3356 /* NCShare.storyboard */; };
@@ -738,6 +745,7 @@
 		AFCE353827E5DE0400FEA6C2 /* NCShare+Helper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NCShare+Helper.swift"; sourceTree = "<group>"; };
 		AFD3323F276A02C000F5AE02 /* UIApplication+Extension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIApplication+Extension.swift"; sourceTree = "<group>"; };
 		D5B6AA7727200C7200D49C24 /* NCActivityTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCActivityTableViewCell.swift; sourceTree = "<group>"; };
+		F343A4B22A1E01FF00DDA874 /* PHAsset+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "PHAsset+Extension.swift"; sourceTree = "<group>"; };
 		F700222B1EC479840080073F /* Custom.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Custom.xcassets; sourceTree = "<group>"; };
 		F700510022DF63AC003A3356 /* NCShare.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = NCShare.storyboard; sourceTree = "<group>"; };
 		F700510222DF6897003A3356 /* Parchment.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Parchment.framework; path = Carthage/Build/iOS/Parchment.framework; sourceTree = "<group>"; };
@@ -1895,6 +1903,7 @@
 				F713FEFE2472764000214AF6 /* UIImage+animatedGIF.h */,
 				F713FEFF2472764100214AF6 /* UIImage+animatedGIF.m */,
 				F7B7504A2397D38E004E13EC /* UIImage+Extension.swift */,
+				F343A4B22A1E01FF00DDA874 /* PHAsset+Extension.swift */,
 			);
 			path = Extensions;
 			sourceTree = "<group>";
@@ -2952,6 +2961,7 @@
 				F78E2D6B29AF02DB0024D4F3 /* Database.swift in Sources */,
 				F7817CFF29802D1A00FFBC65 /* NCPushNotificationEncryption.m in Sources */,
 				F798F0EC2588060A000DAFFD /* UIColor+Extension.swift in Sources */,
+				F343A4B92A1E084400DDA874 /* PHAsset+Extension.swift in Sources */,
 				F749B656297B0F2400087535 /* NCManageDatabase+Avatar.swift in Sources */,
 				F782FDC424E6933900666099 /* NCUtility.swift in Sources */,
 			);
@@ -2978,6 +2988,7 @@
 				F7490E8329882C84009DCE94 /* NCManageDatabase+LayoutForView.swift in Sources */,
 				F7490E7629882BF3009DCE94 /* NCUserBaseUrl.swift in Sources */,
 				F7490E8029882C76009DCE94 /* NCManageDatabase+Avatar.swift in Sources */,
+				F343A4B82A1E084300DDA874 /* PHAsset+Extension.swift in Sources */,
 				F78E2D6A29AF02DB0024D4F3 /* Database.swift in Sources */,
 				F7490E7429882BCC009DCE94 /* NCManageDatabase.swift in Sources */,
 				F7490E6E29882B56009DCE94 /* NCBrand.swift in Sources */,
@@ -3019,6 +3030,7 @@
 				F7A0D1362591FBC5008F8A13 /* String+Extension.swift in Sources */,
 				F7EDE4D6262D7B9600414FE6 /* NCListCell.swift in Sources */,
 				F7707687263A853700A1BA94 /* NCContentPresenter.swift in Sources */,
+				F343A4B62A1E084200DDA874 /* PHAsset+Extension.swift in Sources */,
 				F70460532499095400BB98A7 /* NotificationCenter+MainThread.swift in Sources */,
 				F70BFC7520E0FA7D00C67599 /* NCUtility.swift in Sources */,
 				AF22B20C277C6F4D00DAB0CC /* NCShareCell.swift in Sources */,
@@ -3093,6 +3105,7 @@
 				F78302FE28B4C44700B84583 /* NCBrand.swift in Sources */,
 				F749B64B297B0CBB00087535 /* NCManageDatabase+Share.swift in Sources */,
 				F7817CF929801A3500FFBC65 /* Data+Extension.swift in Sources */,
+				F343A4B42A1E084100DDA874 /* PHAsset+Extension.swift in Sources */,
 				F793E59F28B764F6005E4B02 /* NCContentPresenter.swift in Sources */,
 				F76DEE9828F808AF0041B1C9 /* LockscreenWidgetProvider.swift in Sources */,
 				F78A10C029322E8A008499B8 /* NCManageDatabase+Directory.swift in Sources */,
@@ -3144,6 +3157,7 @@
 				F73D5E49246DE09200DF6467 /* NCElementsJSON.swift in Sources */,
 				F771E3D520E2392D00AFB62D /* FileProviderItem.swift in Sources */,
 				AF4BF616275629E20081CEEF /* NCManageDatabase+Account.swift in Sources */,
+				F343A4B72A1E084300DDA874 /* PHAsset+Extension.swift in Sources */,
 				F7434B3620E23FE000417916 /* NCManageDatabase.swift in Sources */,
 				F798F0E725880609000DAFFD /* UIColor+Extension.swift in Sources */,
 				F7D68FCF28CB9051009139F3 /* NCManageDatabase+DashboardWidget.swift in Sources */,
@@ -3327,6 +3341,7 @@
 				F707C26521A2DC5200F6181E /* NCStoreReview.swift in Sources */,
 				F7BAADCB1ED5A87C00B7EAD4 /* NCManageDatabase.swift in Sources */,
 				F77C97392953131000FDDD09 /* NCCameraRoll.swift in Sources */,
+				F343A4B32A1E01FF00DDA874 /* PHAsset+Extension.swift in Sources */,
 				F70968A424212C4E00ED60E5 /* NCLivePhoto.swift in Sources */,
 				F7C30DFA291BCF790017149B /* NCNetworkingE2EECreateFolder.swift in Sources */,
 				F7BC288026663F85004D46C5 /* NCViewCertificateDetails.swift in Sources */,
@@ -3389,6 +3404,7 @@
 				F7A8D73A28F17E28008BBE1C /* NCManageDatabase+Video.swift in Sources */,
 				F7A8D73828F17E21008BBE1C /* NCManageDatabase+DashboardWidget.swift in Sources */,
 				F7A8D73928F17E25008BBE1C /* NCManageDatabase+Metadata.swift in Sources */,
+				F343A4B52A1E084200DDA874 /* PHAsset+Extension.swift in Sources */,
 				F72FD3B7297ED49A00075D28 /* NCManageDatabase+E2EE.swift in Sources */,
 				F7A8D74128F18254008BBE1C /* UIColor+Extension.swift in Sources */,
 				F7A8D73428F17E12008BBE1C /* NCDatabase.swift in Sources */,

+ 34 - 0
iOSClient/Extensions/PHAsset+Extension.swift

@@ -0,0 +1,34 @@
+//
+//  PHAsset+Extension.swift
+//  Nextcloud
+//
+//  Created by Milen on 24.05.23.
+//  Copyright © 2023 Marino Faggiana. All rights reserved.
+//
+
+import Foundation
+import UIKit
+
+extension PHAsset {
+    var originalFilename: NSString {
+        if let resource = PHAssetResource.assetResources(for: self).first {
+            return resource.originalFilename as NSString
+        } else {
+            return self.value(forKey: "filename") as? NSString
+            ?? ("IMG_" + CCUtility.getIncrementalNumber() + getExtension()) as NSString 
+        }
+    }
+
+    private func getExtension() -> String {
+        switch mediaType {
+        case .video:
+            return ".mp4"
+        case .image:
+            return ".jpg"
+        case .audio:
+            return ".mp3"
+        default:
+            return ".unknownType"
+        }
+    }
+}

+ 5 - 5
iOSClient/Main/Create cloud/NCCreateFormUploadAssets.swift

@@ -339,7 +339,7 @@ class NCCreateFormUploadAssets: XLFormViewController, NCSelectDelegate {
                 var serverUrl = self.serverUrl
                 var livePhoto: Bool = false
                 let creationDate = asset.creationDate ?? Date()
-                let fileName = CCUtility.createFileName(asset.value(forKey: "filename") as? String, fileDate: creationDate, fileType: asset.mediaType, keyFileName: NCGlobal.shared.keyFileNameMask, keyFileNameType: NCGlobal.shared.keyFileNameType, keyFileNameOriginal: NCGlobal.shared.keyFileNameOriginal, forcedNewFileName: false)!
+                let fileName = CCUtility.createFileName(asset.originalFilename as String, fileDate: creationDate, fileType: asset.mediaType, keyFileName: NCGlobal.shared.keyFileNameMask, keyFileNameType: NCGlobal.shared.keyFileNameType, keyFileNameOriginal: NCGlobal.shared.keyFileNameOriginal, forcedNewFileName: false)!
 
                 if asset.mediaSubtypes.contains(.photoLive) && CCUtility.getLivePhoto() {
                     livePhoto = true
@@ -411,7 +411,7 @@ class NCCreateFormUploadAssets: XLFormViewController, NCSelectDelegate {
 
         if CCUtility.getOriginalFileName(NCGlobal.shared.keyFileNameOriginal) {
 
-            return (NSLocalizedString("_filename_", comment: "") + ": " + (asset.value(forKey: "filename") as! String))
+            return (NSLocalizedString("_filename_", comment: "") + ": " + (asset.originalFilename as String))
 
         } else if let valueRename = valueRename {
 
@@ -423,18 +423,18 @@ class NCCreateFormUploadAssets: XLFormViewController, NCSelectDelegate {
                 CCUtility.setFileNameMask(valueRename, key: NCGlobal.shared.keyFileNameMask)
                 self.form.delegate = self
 
-                returnString = CCUtility.createFileName(asset.value(forKey: "filename") as! String?, fileDate: creationDate, fileType: asset.mediaType, keyFileName: NCGlobal.shared.keyFileNameMask, keyFileNameType: NCGlobal.shared.keyFileNameType, keyFileNameOriginal: NCGlobal.shared.keyFileNameOriginal, forcedNewFileName: false)
+                returnString = CCUtility.createFileName(asset.originalFilename as String, fileDate: creationDate, fileType: asset.mediaType, keyFileName: NCGlobal.shared.keyFileNameMask, keyFileNameType: NCGlobal.shared.keyFileNameType, keyFileNameOriginal: NCGlobal.shared.keyFileNameOriginal, forcedNewFileName: false)
 
             } else {
 
                 CCUtility.setFileNameMask("", key: NCGlobal.shared.keyFileNameMask)
-                returnString = CCUtility.createFileName(asset.value(forKey: "filename") as! String?, fileDate: creationDate, fileType: asset.mediaType, keyFileName: nil, keyFileNameType: NCGlobal.shared.keyFileNameType, keyFileNameOriginal: NCGlobal.shared.keyFileNameOriginal, forcedNewFileName: false)
+                returnString = CCUtility.createFileName(asset.originalFilename as String, fileDate: creationDate, fileType: asset.mediaType, keyFileName: nil, keyFileNameType: NCGlobal.shared.keyFileNameType, keyFileNameOriginal: NCGlobal.shared.keyFileNameOriginal, forcedNewFileName: false)
             }
 
         } else {
 
             CCUtility.setFileNameMask("", key: NCGlobal.shared.keyFileNameMask)
-            returnString = CCUtility.createFileName(asset.value(forKey: "filename") as! String?, fileDate: creationDate, fileType: asset.mediaType, keyFileName: nil, keyFileNameType: NCGlobal.shared.keyFileNameType, keyFileNameOriginal: NCGlobal.shared.keyFileNameOriginal, forcedNewFileName: false)
+            returnString = CCUtility.createFileName(asset.originalFilename as String, fileDate: creationDate, fileType: asset.mediaType, keyFileName: nil, keyFileNameType: NCGlobal.shared.keyFileNameType, keyFileNameOriginal: NCGlobal.shared.keyFileNameOriginal, forcedNewFileName: false)
         }
 
         return String(format: NSLocalizedString("_preview_filename_", comment: ""), "MM, MMM, DD, YY, YYYY, HH, hh, mm, ss, ampm") + ":" + "\n\n" + returnString

+ 38 - 66
iOSClient/Main/Create cloud/NCUploadAssets.swift

@@ -173,19 +173,7 @@ struct UploadAssetsView: View {
         uploadAssets.loadImages()
     }
 
-    func getOriginalFilename() -> String {
-
-        CCUtility.setOriginalFileName(isMaintainOriginalFilename, key: NCGlobal.shared.keyFileNameOriginal)
-
-        if let asset = uploadAssets.assets.first?.phAsset, let name = (asset.value(forKey: "filename") as? String) {
-            return (name as NSString).deletingPathExtension
-        } else {
-            return ""
-        }
-    }
-
     func getTextServerUrl(_ serverUrl: String) -> String {
-
         if let directory = NCManageDatabase.shared.getTableDirectory(predicate: NSPredicate(format: "account == %@ AND serverUrl == %@", uploadAssets.userBaseUrl.account, serverUrl)), let metadata = NCManageDatabase.shared.getMetadataFromOcId(directory.ocId) {
             return (metadata.fileNameView)
         } else {
@@ -193,7 +181,7 @@ struct UploadAssetsView: View {
         }
     }
 
-    func setFileNameMask(fileName: String?) -> String {
+    private func setFileNameMaskForPreview(fileName: String?) -> String {
 
         guard let asset = uploadAssets.assets.first?.phAsset else { return "" }
         var preview: String = ""
@@ -202,48 +190,23 @@ struct UploadAssetsView: View {
         CCUtility.setOriginalFileName(isMaintainOriginalFilename, key: NCGlobal.shared.keyFileNameOriginal)
         CCUtility.setFileNameType(isAddFilenametype, key: NCGlobal.shared.keyFileNameType)
 
-        if let fileName = fileName {
-
-            let fileName = fileName.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
-
-            if !fileName.isEmpty {
-
-                CCUtility.setFileNameMask(fileName, key: NCGlobal.shared.keyFileNameMask)
-                preview = CCUtility.createFileName(asset.value(forKey: "filename") as? String,
-                                                   fileDate: creationDate, fileType: asset.mediaType,
-                                                   keyFileName: NCGlobal.shared.keyFileNameMask,
-                                                   keyFileNameType: NCGlobal.shared.keyFileNameType,
-                                                   keyFileNameOriginal: NCGlobal.shared.keyFileNameOriginal,
-                                                   forcedNewFileName: false)
-
-            } else {
-
-                CCUtility.setFileNameMask("", key: NCGlobal.shared.keyFileNameMask)
-                preview = CCUtility.createFileName(asset.value(forKey: "filename") as? String,
-                                                   fileDate: creationDate,
-                                                   fileType: asset.mediaType,
-                                                   keyFileName: nil,
-                                                   keyFileNameType: NCGlobal.shared.keyFileNameType,
-                                                   keyFileNameOriginal: NCGlobal.shared.keyFileNameOriginal,
-                                                   forcedNewFileName: false)
-            }
+        let trimmedFileName = fileName?.trimmingCharacters(in: .whitespacesAndNewlines) ?? ""
+        CCUtility.setFileNameMask(trimmedFileName, key: NCGlobal.shared.keyFileNameMask)
 
-        } else {
-
-            CCUtility.setFileNameMask("", key: NCGlobal.shared.keyFileNameMask)
-            preview = CCUtility.createFileName(asset.value(forKey: "filename") as? String,
-                                               fileDate: creationDate,
-                                               fileType: asset.mediaType,
-                                               keyFileName: nil,
-                                               keyFileNameType: NCGlobal.shared.keyFileNameType,
-                                               keyFileNameOriginal: NCGlobal.shared.keyFileNameOriginal,
-                                               forcedNewFileName: false)
-        }
+        preview = CCUtility.createFileName(
+            getOriginalFilenameForPreview() as String,
+            fileDate: creationDate,
+            fileType: asset.mediaType,
+            keyFileName: trimmedFileName.isEmpty ? nil : NCGlobal.shared.keyFileNameMask,
+            keyFileNameType: NCGlobal.shared.keyFileNameType,
+            keyFileNameOriginal: NCGlobal.shared.keyFileNameOriginal,
+            forcedNewFileName: false
+        )
 
         return String(format: NSLocalizedString("_preview_filename_", comment: ""), "MM, MMM, DD, YY, YYYY, HH, hh, mm, ss, ampm") + ":" + "\n\n" + (preview as NSString).deletingPathExtension
     }
 
-    func save(completion: @escaping (_ metadatasNOConflict: [tableMetadata], _ metadatasUploadInConflict: [tableMetadata]) -> Void) {
+    private func save(completion: @escaping (_ metadatasNOConflict: [tableMetadata], _ metadatasUploadInConflict: [tableMetadata]) -> Void) {
 
         var metadatasNOConflict: [tableMetadata] = []
         var metadatasUploadInConflict: [tableMetadata] = []
@@ -252,21 +215,21 @@ struct UploadAssetsView: View {
         let autoUploadSubfolderGranularity = NCManageDatabase.shared.getAccountAutoUploadSubfolderGranularity()
 
         for tlAsset in uploadAssets.assets {
-            guard let asset = tlAsset.phAsset,
-                  let previewStore = uploadAssets.previewStore.first(where: { $0.id == asset.localIdentifier }),
-                  let assetFileName = asset.value(forKey: "filename") as? NSString else { continue }
+            guard let asset = tlAsset.phAsset, let previewStore = uploadAssets.previewStore.first(where: { $0.id == asset.localIdentifier }) else { continue }
 
+            let assetFileName = asset.originalFilename
             var livePhoto: Bool = false
             let creationDate = asset.creationDate ?? Date()
             let ext = assetFileName.pathExtension.lowercased()
-            let fileName = previewStore.fileName.isEmpty ?
-            CCUtility.createFileName(assetFileName as String,
-                                                    fileDate: creationDate,
-                                                    fileType: asset.mediaType,
-                                                    keyFileName: NCGlobal.shared.keyFileNameMask,
-                                                    keyFileNameType: NCGlobal.shared.keyFileNameType,
-                                                    keyFileNameOriginal: NCGlobal.shared.keyFileNameOriginal,
-                                                    forcedNewFileName: false)!
+
+            let fileName = previewStore.fileName.isEmpty
+            ? CCUtility.createFileName(assetFileName as String,
+                                       fileDate: creationDate,
+                                       fileType: asset.mediaType,
+                                       keyFileName: NCGlobal.shared.keyFileNameMask,
+                                       keyFileNameType: NCGlobal.shared.keyFileNameType,
+                                       keyFileNameOriginal: NCGlobal.shared.keyFileNameOriginal,
+                                       forcedNewFileName: false)!
             : (previewStore.fileName + "." + ext)
 
             if previewStore.assetType == .livePhoto && CCUtility.getLivePhoto() && previewStore.data == nil {
@@ -331,7 +294,7 @@ struct UploadAssetsView: View {
         completion(metadatasNOConflict, metadatasUploadInConflict)
     }
 
-    func presentedQuickLook(index: Int) {
+    private func presentedQuickLook(index: Int) {
 
         var image: UIImage?
 
@@ -353,8 +316,7 @@ struct UploadAssetsView: View {
         }
     }
 
-    func deleteAsset(index: Int) {
-
+    private func deleteAsset(index: Int) {
         uploadAssets.assets.remove(at: index)
         uploadAssets.previewStore.remove(at: index)
         if uploadAssets.previewStore.isEmpty {
@@ -362,6 +324,16 @@ struct UploadAssetsView: View {
         }
     }
 
+    private func getOriginalFilenameForPreview() -> NSString {
+        CCUtility.setOriginalFileName(isMaintainOriginalFilename, key: NCGlobal.shared.keyFileNameOriginal)
+
+        if let asset = uploadAssets.assets.first?.phAsset {
+            return asset.originalFilename
+        } else {
+            return ""
+        }
+    }
+
     var body: some View {
 
         NavigationView {
@@ -496,7 +468,7 @@ struct UploadAssetsView: View {
                         HStack {
                             Text(NSLocalizedString("_filename_", comment: ""))
                             if isMaintainOriginalFilename {
-                                Text(getOriginalFilename())
+                                Text(getOriginalFilenameForPreview().deletingPathExtension)
                                     .font(.system(size: 15))
                                     .frame(maxWidth: .infinity, alignment: .trailing)
                                     .foregroundColor(Color.gray)
@@ -508,7 +480,7 @@ struct UploadAssetsView: View {
                             }
                         }
                         if !isMaintainOriginalFilename {
-                            Text(setFileNameMask(fileName: fileName))
+                            Text(setFileNameMaskForPreview(fileName: fileName))
                                 .font(.system(size: 11))
                                 .foregroundColor(Color.gray)
                         }

+ 1 - 1
iOSClient/Networking/NCAutoUpload.swift

@@ -118,7 +118,7 @@ class NCAutoUpload: NSObject {
                 let day = dateFormatter.string(from: assetDate)
                 let assetMediaType = asset.mediaType
                 var serverUrl: String = ""
-                let fileName = CCUtility.createFileName(asset.value(forKey: "filename") as? String, fileDate: assetDate, fileType: assetMediaType, keyFileName: NCGlobal.shared.keyFileNameAutoUploadMask, keyFileNameType: NCGlobal.shared.keyFileNameAutoUploadType, keyFileNameOriginal: NCGlobal.shared.keyFileNameOriginalAutoUpload, forcedNewFileName: false)!
+                let fileName = CCUtility.createFileName(asset.originalFilename as String, fileDate: assetDate, fileType: assetMediaType, keyFileName: NCGlobal.shared.keyFileNameAutoUploadMask, keyFileNameType: NCGlobal.shared.keyFileNameAutoUploadType, keyFileNameOriginal: NCGlobal.shared.keyFileNameOriginalAutoUpload, forcedNewFileName: false)!
 
                 if asset.mediaSubtypes.contains(.photoLive) && CCUtility.getLivePhoto() {
                     livePhoto = true

+ 2 - 1
iOSClient/Utility/NCCameraRoll.swift

@@ -105,10 +105,11 @@ class NCCameraRoll: NSObject {
         }
 
         let fetchAssets = PHAsset.fetchAssets(withLocalIdentifiers: [metadata.assetLocalIdentifier], options: nil)
-        guard fetchAssets.count > 0, let asset = fetchAssets.firstObject, let extensionAsset = (asset.value(forKey: "filename") as? NSString)?.pathExtension.uppercased() else {
+        guard fetchAssets.count > 0, let asset = fetchAssets.firstObject else {
             return callCompletionWithError()
         }
 
+        let extensionAsset = asset.originalFilename.pathExtension.uppercased()
         let creationDate = asset.creationDate ?? Date()
         let modificationDate = asset.modificationDate ?? Date()