Bläddra i källkod

new detect LivePhoto

marinofaggiana 4 år sedan
förälder
incheckning
cc01611223

+ 1 - 1
Cartfile.resolved

@@ -18,7 +18,7 @@ github "krzyzanowskim/OpenSSL" "1.0.218"
 github "malcommac/SwiftRichString" "3.7.2"
 github "marinofaggiana/KTVHTTPCache" "2.0.2"
 github "marinofaggiana/TOPasscodeViewController" "0.0.7"
-github "nextcloud/ios-communication-library" "9cedf3beb321b2f06fe35975a54a41bcb0ec531c"
+github "nextcloud/ios-communication-library" "33faae53bd2f4a0686285d0028e910087902c025"
 github "realm/realm-cocoa" "v5.3.3"
 github "rechsteiner/Parchment" "v2.4.0"
 github "scenee/FloatingPanel" "v1.7.5"

+ 9 - 1
iOSClient/AutoUpload/NCAutoUpload.m

@@ -383,11 +383,17 @@
     
     for (PHAsset *asset in newAssetToUpload) {
         
+        BOOL livePhoto = false;
         NSDate *assetDate = asset.creationDate;
         PHAssetMediaType assetMediaType = asset.mediaType;
         NSString *session;
         NSString *fileName = [CCUtility createFileName:[asset valueForKey:@"filename"] fileDate:asset.creationDate fileType:asset.mediaType keyFileName:k_keyFileNameAutoUploadMask keyFileNameType:k_keyFileNameAutoUploadType keyFileNameOriginal:k_keyFileNameOriginalAutoUpload];
 
+        // Detect LivePhoto Upload
+        if ((asset.mediaSubtypes == PHAssetMediaSubtypePhotoLive || asset.mediaSubtypes == PHAssetMediaSubtypePhotoLive+PHAssetMediaSubtypePhotoHDR) && CCUtility.getLivePhoto) {
+            livePhoto = true;
+        }
+        
         // Select type of session
         
         if (assetMediaType == PHAssetMediaTypeImage && tableAccount.autoUploadWWAnPhoto == NO) session = NCCommunicationCommon.shared.sessionIdentifierBackground;
@@ -414,6 +420,7 @@
             tableMetadata *metadataForUpload = [[NCManageDatabase sharedInstance] createMetadataWithAccount:appDelegate.activeAccount fileName:fileName ocId:[[NSUUID UUID] UUIDString] serverUrl:serverUrl urlBase:appDelegate.activeUrl url:@"" contentType:@""];
             
             metadataForUpload.assetLocalIdentifier = asset.localIdentifier;
+            metadataForUpload.livePhoto = livePhoto;
             metadataForUpload.session = session;
             metadataForUpload.sessionSelector = selector;
             metadataForUpload.size = [[NCUtilityFileSystem shared] getFileSizeWithAsset:asset];
@@ -425,7 +432,7 @@
             }
 
             // Add Medtadata MOV LIVE PHOTO for upload
-            if ((asset.mediaSubtypes == PHAssetMediaSubtypePhotoLive || asset.mediaSubtypes == PHAssetMediaSubtypePhotoLive+PHAssetMediaSubtypePhotoHDR) && CCUtility.getLivePhoto) {
+            if (livePhoto) {
                 
                 NSString *fileNameMove = [NSString stringWithFormat:@"%@.mov", fileName.stringByDeletingPathExtension];
                 NSString *ocId = [[NSUUID UUID] UUIDString];
@@ -439,6 +446,7 @@
                         
                         tableMetadata *metadataMOVForUpload = [[NCManageDatabase sharedInstance] createMetadataWithAccount:appDelegate.activeAccount fileName:fileNameMove ocId:ocId serverUrl:serverUrl urlBase:appDelegate.activeUrl url:@"" contentType:@""];
                         
+                        metadataMOVForUpload.livePhoto = livePhoto;
                         metadataMOVForUpload.session = session;
                         metadataMOVForUpload.sessionSelector = selector;
                         metadataMOVForUpload.size = fileSize;

+ 1 - 1
iOSClient/CCGlobal.h

@@ -85,7 +85,7 @@
 
 // Database Realm
 #define k_databaseDefault                               @"nextcloud.realm"
-#define k_databaseSchemaVersion                         135
+#define k_databaseSchemaVersion                         139
 
 // Intro selector
 #define k_intro_login                                   0

+ 1 - 1
iOSClient/Database/NCDatabase.swift

@@ -314,9 +314,9 @@ class tableMetadata: Object {
     @objc dynamic var fileName = ""
     @objc dynamic var fileNameView = ""
     @objc dynamic var fileNameWithoutExt = ""
-    @objc dynamic var hasMOVlinked: Bool = false
     @objc dynamic var hasPreview: Bool = false
     @objc dynamic var iconName = ""
+    @objc dynamic var livePhoto: Bool = false
     @objc dynamic var mountType = ""
     @objc dynamic var ocId = ""
     @objc dynamic var ownerId = ""

+ 3 - 3
iOSClient/Database/NCManageDatabase.swift

@@ -113,7 +113,7 @@ class NCManageDatabase: NSObject {
                         migration.deleteData(forType: tableExternalSites.className())
                     }
                     
-                    if oldSchemaVersion < 135 {
+                    if oldSchemaVersion < 139 {
                         migration.deleteData(forType: tableMetadata.className())
                     }
                     
@@ -1734,9 +1734,9 @@ class NCManageDatabase: NSObject {
         metadata.fileName = file.fileName
         metadata.fileNameView = file.fileName
         metadata.fileNameWithoutExt = file.fileNameWithoutExt
-        metadata.hasMOVlinked = file.hasMOVlinked
         metadata.hasPreview = file.hasPreview
         metadata.iconName = file.iconName
+        metadata.livePhoto = file.livePhoto
         metadata.mountType = file.mountType
         metadata.ocId = file.ocId
         metadata.ownerId = file.ownerId
@@ -1889,9 +1889,9 @@ class NCManageDatabase: NSObject {
                     metadata.fileName = file.fileName
                     metadata.fileNameView = file.fileName
                     metadata.fileNameWithoutExt = file.fileNameWithoutExt
-                    metadata.hasMOVlinked = file.hasMOVlinked
                     metadata.hasPreview = file.hasPreview
                     metadata.iconName = file.iconName
+                    metadata.livePhoto = file.livePhoto
                     metadata.mountType = file.mountType
                     metadata.ocId = file.ocId
                     metadata.ownerId = file.ownerId

+ 9 - 2
iOSClient/Main/CCMain.m

@@ -1003,11 +1003,16 @@
 
     for (PHAsset *asset in assets) {
         
+        BOOL livePhoto = false;
         NSString *fileName = [CCUtility createFileName:[asset valueForKey:@"filename"] fileDate:asset.creationDate fileType:asset.mediaType keyFileName:k_keyFileNameMask keyFileNameType:k_keyFileNameType keyFileNameOriginal:k_keyFileNameOriginal];
-        
         NSDate *assetDate = asset.creationDate;
         NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
         
+        // Detect LivePhoto Upload
+        if ((asset.mediaSubtypes == PHAssetMediaSubtypePhotoLive || asset.mediaSubtypes == PHAssetMediaSubtypePhotoLive+PHAssetMediaSubtypePhotoHDR) && CCUtility.getLivePhoto) {
+            livePhoto = true;
+        }
+        
         // Create serverUrl if use sub folder
         if (useSubFolder) {
             
@@ -1029,6 +1034,7 @@
         tableMetadata *metadataForUpload = [[NCManageDatabase sharedInstance] createMetadataWithAccount:appDelegate.activeAccount fileName:fileName ocId:[[NSUUID UUID] UUIDString] serverUrl:serverUrl urlBase:appDelegate.activeUrl url:@"" contentType:@""];
         
         metadataForUpload.assetLocalIdentifier = asset.localIdentifier;
+        metadataForUpload.livePhoto = livePhoto;
         metadataForUpload.session = session;
         metadataForUpload.sessionSelector = selectorUploadFile;
         metadataForUpload.size = [[NCUtilityFileSystem shared] getFileSizeWithAsset:asset];
@@ -1041,7 +1047,7 @@
         }
         
         // Add Medtadata MOV LIVE PHOTO for upload
-        if ((asset.mediaSubtypes == PHAssetMediaSubtypePhotoLive || asset.mediaSubtypes == PHAssetMediaSubtypePhotoLive+PHAssetMediaSubtypePhotoHDR) && CCUtility.getLivePhoto) {
+        if (livePhoto) {
                 
             NSString *fileNameMove = [NSString stringWithFormat:@"%@.mov", fileName.stringByDeletingPathExtension];
             NSString *ocId = [[NSUUID UUID] UUIDString];
@@ -1055,6 +1061,7 @@
                     
                     tableMetadata *metadataMOVForUpload = [[NCManageDatabase sharedInstance] createMetadataWithAccount:appDelegate.activeAccount fileName:fileNameMove ocId:ocId serverUrl:serverUrl urlBase:appDelegate.activeUrl url:@"" contentType:@""];
                     
+                    metadataMOVForUpload.livePhoto = livePhoto;
                     metadataMOVForUpload.session = session;
                     metadataMOVForUpload.sessionSelector = selectorUploadFile;
                     metadataMOVForUpload.size = fileSize;

+ 4 - 4
iOSClient/Media/NCMedia.swift

@@ -589,7 +589,7 @@ extension NCMedia: UICollectionViewDataSource {
         // image status
         if metadata.typeFile == k_metadataTypeFile_video || metadata.typeFile == k_metadataTypeFile_audio {
             cell.imageStatus.image = cacheImages.cellPlayImage
-        } else if metadata.hasMOVlinked {
+        } else if metadata.livePhoto {
             cell.imageStatus.image = cacheImages.cellLivePhotoImage
         }
         
@@ -658,12 +658,12 @@ extension NCMedia {
         }
         let startServerUrl = CCUtility.getHomeServerUrlActiveUrl(appDelegate.activeUrl) + mediaPath
         
-        predicateDefault = NSPredicate(format: "account == %@ AND serverUrl BEGINSWITH %@ AND (typeFile == %@ OR typeFile == %@) AND NOT (session CONTAINS[c] 'upload')", appDelegate.activeAccount, startServerUrl, k_metadataTypeFile_image, k_metadataTypeFile_video)
+        predicateDefault = NSPredicate(format: "account == %@ AND serverUrl BEGINSWITH %@ AND (typeFile == %@ OR typeFile == %@) AND NOT (session CONTAINS[c] 'upload') AND NOT (ext == 'mov' AND livePhoto == true)", appDelegate.activeAccount, startServerUrl, k_metadataTypeFile_image, k_metadataTypeFile_video)
         
         if filterTypeFileImage {
-            predicate = NSPredicate(format: "account == %@ AND serverUrl BEGINSWITH %@ AND typeFile == %@ AND NOT (session CONTAINS[c] 'upload')", appDelegate.activeAccount, startServerUrl, k_metadataTypeFile_video)
+            predicate = NSPredicate(format: "account == %@ AND serverUrl BEGINSWITH %@ AND typeFile == %@ AND NOT (session CONTAINS[c] 'upload') AND NOT (ext == 'mov' AND livePhoto == true)", appDelegate.activeAccount, startServerUrl, k_metadataTypeFile_video)
         } else if filterTypeFileVideo {
-            predicate = NSPredicate(format: "account == %@ AND serverUrl BEGINSWITH %@ AND typeFile == %@ AND NOT (session CONTAINS[c] 'upload')", appDelegate.activeAccount, startServerUrl, k_metadataTypeFile_image)
+            predicate = NSPredicate(format: "account == %@ AND serverUrl BEGINSWITH %@ AND typeFile == %@ AND NOT (session CONTAINS[c] 'upload') AND NOT (ext == 'mov' AND livePhoto == true)", appDelegate.activeAccount, startServerUrl, k_metadataTypeFile_image)
         } else {
             predicate = predicateDefault
         }