Browse Source

Add richdocumentsMimetypes

Marino Faggiana 6 years ago
parent
commit
5c65d2a968

+ 1 - 1
iOSClient/Database/NCDatabase.swift

@@ -93,7 +93,7 @@ class tableCapabilities: Object {
     @objc dynamic var versionString = ""
     @objc dynamic var endToEndEncryption: Bool = false
     @objc dynamic var endToEndEncryptionVersion = ""
-    let RichdocumentsMimetypes = List<String>()
+    let richdocumentsMimetypes = List<String>()
 }
 
 class tableCertificates: Object {

+ 18 - 1
iOSClient/Database/NCManageDatabase.swift

@@ -668,8 +668,9 @@ class NCManageDatabase: NSObject {
                 resultCapabilities.versionString = capabilities.versionString
                 resultCapabilities.endToEndEncryption = capabilities.isEndToEndEncryptionEnabled
                 resultCapabilities.endToEndEncryptionVersion = capabilities.endToEndEncryptionVersion
+                resultCapabilities.richdocumentsMimetypes.removeAll()
                 for mimeType in capabilities.richdocumentsMimetypes {
-                    resultCapabilities.RichdocumentsMimetypes.append(mimeType as! String)
+                    resultCapabilities.richdocumentsMimetypes.append(mimeType as! String)
                 }
                 
                 if result == nil {
@@ -758,6 +759,22 @@ class NCManageDatabase: NSObject {
         return result
     }
     
+    @objc func getRichdocumentsMimetypes() -> [String]? {
+        
+        guard let tableAccount = self.getAccountActive() else {
+            return nil
+        }
+        
+        let realm = try! Realm()
+        realm.refresh()
+        
+        guard let result = realm.objects(tableCapabilities.self).filter("account = %@", tableAccount.account).first else {
+            return nil
+        }
+        
+        return Array(result.richdocumentsMimetypes)
+    }
+    
     //MARK: -
     //MARK: Table Certificates
     

+ 12 - 0
iOSClient/Main/CCDetail.m

@@ -204,6 +204,18 @@
     if ([self.metadataDetail.typeFile isEqualToString: k_metadataTypeFile_document]) {
         
         fileNameExtension = [[self.metadataDetail.fileNameView pathExtension] uppercaseString];
+        NSString *mimeType = [CCUtility getMimeType:self.metadataDetail.fileNameView];
+        NSArray *richdocumentsMimetypes = [[NCManageDatabase sharedInstance] getRichdocumentsMimetypes];
+        
+        if (richdocumentsMimetypes.count > 0 & mimeType != nil && [mimeType componentsSeparatedByString:@"."].count >= 2) {
+            NSArray *mimeTypeArray = [mimeType componentsSeparatedByString:@"."];
+            NSString* mimeType = [NSString stringWithFormat:@"%@.%@",mimeTypeArray[mimeTypeArray.count-2], mimeTypeArray[mimeTypeArray.count-1]];
+            for (NSString *richdocumentMimetype in richdocumentsMimetypes) {
+                if ([richdocumentMimetype containsString:mimeType]) {
+                    return;
+                }
+            }
+        }
         
         if ([fileNameExtension isEqualToString:@"PDF"]) {
             

+ 2 - 0
iOSClient/Utility/CCUtility.h

@@ -203,6 +203,8 @@
 
 + (NSString *)getDirectoryScan;
 
++ (NSString *)getMimeType:(NSString *)fileNameView;
+
 // ===== E2E Encrypted =====
 
 + (NSString *)generateRandomIdentifier;

+ 24 - 0
iOSClient/Utility/CCUtility.m

@@ -1160,6 +1160,30 @@
     return metadata;
 }
 
++ (NSString *)getMimeType:(NSString *)fileNameView
+{
+    CFStringRef fileUTI = nil;
+    NSString *returnFileUTI = nil;
+    
+    if ([fileNameView isEqualToString:@"."]) {
+        
+        return returnFileUTI;
+        
+    } else {
+        CFStringRef fileExtension = (__bridge CFStringRef)[fileNameView pathExtension];
+        NSString *ext = (__bridge NSString *)fileExtension;
+        ext = ext.uppercaseString;
+        fileUTI = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, fileExtension, NULL);
+        
+        if (fileUTI != nil) {
+            returnFileUTI = (__bridge NSString *)fileUTI;
+            CFRelease(fileUTI);
+        }
+    }
+    
+    return returnFileUTI;
+}
+
 + (NSString *)insertTypeFileIconName:(NSString *)fileNameView metadata:(tableMetadata *)metadata
 {
     CFStringRef fileUTI = nil;