Browse Source

predisposition for Login Flow 2

marinofaggiana 5 years ago
parent
commit
7634ff9fbd
3 changed files with 99 additions and 57 deletions
  1. 38 37
      iOSClient/AutoUpload/NCAutoUpload.m
  2. 38 18
      iOSClient/Login/CCLogin.m
  3. 23 2
      iOSClient/Login/NCLoginWeb.swift

+ 38 - 37
iOSClient/AutoUpload/NCAutoUpload.m

@@ -423,6 +423,21 @@
             // Update database Auto Upload
             if ([selector isEqualToString:selectorUploadAutoUpload])
                 [self addQueueUploadAndPhotoLibrary:metadataForUpload asset:asset];
+            
+            /*
+            // Add Medtadata MOV LIVE PHOTO for upload
+            if ((asset.mediaSubtypes == PHAssetMediaSubtypePhotoLive || asset.mediaSubtypes == PHAssetMediaSubtypePhotoLive+PHAssetMediaSubtypePhotoHDR) && CCUtility.getMOVLivePhoto) {
+                
+                NSString *fileNameMove = [NSString stringWithFormat:@"%@.mov", fileName.stringByDeletingPathExtension];
+                NSString *filePath = [CCUtility createMetadataIDFromAccount:appDelegate.activeAccount serverUrl:serverUrl fileNameView:fileNameMove directory:false];
+                
+                [self extractLivePhotoAsset:asset filePath:filePath withCompletion:^(NSURL *url) {
+                    if (url != nil) {
+                        
+                    }
+                }];
+            }
+            */
         }
     }
     
@@ -589,46 +604,32 @@
     return nil;
 }
 
-- (void)videoUrlForLivePhotoAsset:(PHAsset*)asset filePath:(NSString *)filePath withCompletionBlock:(void (^)(NSURL* url))completionBlock {
+- (void)extractLivePhotoAsset:(PHAsset*)asset filePath:(NSString *)filePath withCompletion:(void (^)(NSURL* url))completion {
     
-    if ([asset isKindOfClass:[PHAsset class]]) {
-        
-        //NSString* identifier = [(PHAsset*)asset localIdentifier];
-        //NSString* filePath = [NSTemporaryDirectory() stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.mov",[NSString stringWithFormat:@"%.0f",[[NSDate date] timeIntervalSince1970]]]];
-        
-        NSURL *fileUrl = [NSURL fileURLWithPath:filePath];
-
-        PHLivePhotoRequestOptions* options = [PHLivePhotoRequestOptions new];
-        options.deliveryMode = PHImageRequestOptionsDeliveryModeFastFormat;
-        options.networkAccessAllowed = YES;
-        [[PHImageManager defaultManager] requestLivePhotoForAsset:asset targetSize:[UIScreen mainScreen].bounds.size contentMode:PHImageContentModeDefault options:options resultHandler:^(PHLivePhoto * _Nullable livePhoto, NSDictionary * _Nullable info) {
-            if(livePhoto){
-                NSArray* assetResources = [PHAssetResource assetResourcesForLivePhoto:livePhoto];
-                PHAssetResource* videoResource = nil;
-                for(PHAssetResource* resource in assetResources){
-                    if (resource.type == PHAssetResourceTypePairedVideo) {
-                        videoResource = resource;
-                        break;
-                    }
-                }
-                if(videoResource){
-                    [[PHAssetResourceManager defaultManager] writeDataForAssetResource:videoResource toFile:fileUrl options:nil completionHandler:^(NSError * _Nullable error) {
-                        if (!error) {
-                            completionBlock(fileUrl);
-                        } else {
-                            completionBlock(nil);
-                        }
-                    }];
-                } else {
-                    completionBlock(nil);
+    NSURL *fileUrl = [NSURL fileURLWithPath:filePath];
+    PHLivePhotoRequestOptions *options = [PHLivePhotoRequestOptions new];
+    options.deliveryMode = PHImageRequestOptionsDeliveryModeFastFormat;
+    options.networkAccessAllowed = YES;
+    
+    [[PHImageManager defaultManager] requestLivePhotoForAsset:asset targetSize:[UIScreen mainScreen].bounds.size contentMode:PHImageContentModeDefault options:options resultHandler:^(PHLivePhoto * _Nullable livePhoto, NSDictionary * _Nullable info) {
+        if (livePhoto) {
+            NSArray *assetResources = [PHAssetResource assetResourcesForLivePhoto:livePhoto];
+            PHAssetResource *videoResource = nil;
+            for(PHAssetResource *resource in assetResources){
+                if (resource.type == PHAssetResourceTypePairedVideo) {
+                    videoResource = resource;
+                    break;
                 }
-            } else {
-                completionBlock(nil);
             }
-        }];
-    } else {
-        completionBlock(nil);
-    }
+            if(videoResource){
+                [[PHAssetResourceManager defaultManager] writeDataForAssetResource:videoResource toFile:fileUrl options:nil completionHandler:^(NSError * _Nullable error) {
+                    if (!error) {
+                        completion(fileUrl);
+                    } else { completion(nil); }
+                }];
+            } else { completion(nil); }
+        } else { completion(nil); }
+    }];
 }
 #pragma --------------------------------------------------------------------------------------------
 #pragma mark ===== Align Photo Library ====

+ 38 - 18
iOSClient/Login/CCLogin.m

@@ -181,27 +181,47 @@
             [self.activity stopAnimating];
             self.login.enabled = YES;
             
-            // Login Flow
-            if (_user.hidden && _password.hidden && versionMajor >= k_flow_version_available) {
+            // Login Flow V2
+            [[NCCommunication sharedInstance] getLoginFlowV2WithUrlString:self.baseUrl.text completionHandler:^(NSString *token, NSString *endpoint, NSString *login, NSInteger errorCode, NSString *errorDescription) {
                 
-                NCLoginWeb *activeLoginWeb = [[UIStoryboard storyboardWithName:@"CCLogin" bundle:nil] instantiateViewControllerWithIdentifier:@"NCLoginWeb"];
-                activeLoginWeb.urlBase = self.baseUrl.text;
+                // Login Flow V2
+                /*
+                if (errorCode == 0 && token != nil && endpoint != nil && login != nil) {
+                    
+                    NCLoginWeb *activeLoginWeb = [[UIStoryboard storyboardWithName:@"CCLogin" bundle:nil] instantiateViewControllerWithIdentifier:@"NCLoginWeb"];
+                    
+                    activeLoginWeb.urlBase = self.baseUrl.text;
+                    activeLoginWeb.loginFlowV2Available = true;
+                    activeLoginWeb.loginFlowV2Token = token;
+                    activeLoginWeb.loginFlowV2Endpoint = endpoint;
+                    activeLoginWeb.loginFlowV2Login = login;
+                    
+                    [self.navigationController pushViewController:activeLoginWeb animated:true];
+                } else
+                */
                 
-                [self.navigationController pushViewController:activeLoginWeb animated:true];
-            }
-            
-            // NO Login Flow available
-            if (versionMajor < k_flow_version_available) {
-                
-                [self.loginTypeView setHidden:YES];
+                // Login Flow
+                if (_user.hidden && _password.hidden && versionMajor >= k_flow_version_available) {
+                    
+                    NCLoginWeb *activeLoginWeb = [[UIStoryboard storyboardWithName:@"CCLogin" bundle:nil] instantiateViewControllerWithIdentifier:@"NCLoginWeb"];
+                    activeLoginWeb.urlBase = self.baseUrl.text;
+                    
+                    [self.navigationController pushViewController:activeLoginWeb animated:true];
+                }
                 
-                _imageUser.hidden = NO;
-                _user.hidden = NO;
-                _imagePassword.hidden = NO;
-                _password.hidden = NO;
-                
-                [_user becomeFirstResponder];
-            }
+                // NO Login Flow available
+                else if (versionMajor < k_flow_version_available) {
+                    
+                    [self.loginTypeView setHidden:YES];
+                    
+                    _imageUser.hidden = NO;
+                    _user.hidden = NO;
+                    _imagePassword.hidden = NO;
+                    _password.hidden = NO;
+                    
+                    [_user becomeFirstResponder];
+                }
+            }];
             
         } else {
             

+ 23 - 2
iOSClient/Login/NCLoginWeb.swift

@@ -23,6 +23,7 @@
 
 import Foundation
 import WebKit
+import NCCommunication
 
 class NCLoginWeb: UIViewController {
     
@@ -31,7 +32,12 @@ class NCLoginWeb: UIViewController {
     let appDelegate = UIApplication.shared.delegate as! AppDelegate
 
     @objc var urlBase = ""
-
+    
+    @objc var loginFlowV2Available = false
+    @objc var loginFlowV2Token = ""
+    @objc var loginFlowV2Endpoint = ""
+    @objc var loginFlowV2Login = ""
+    
     override func viewDidLoad() {
         super.viewDidLoad()
         
@@ -57,7 +63,11 @@ class NCLoginWeb: UIViewController {
         
         // ADD k_flowEndpoint for Web Flow
         if urlBase != NCBrandOptions.sharedInstance.linkloginPreferredProviders {
-            urlBase =  urlBase + k_flowEndpoint
+            if loginFlowV2Available {
+                urlBase = loginFlowV2Login
+            } else {
+                urlBase = urlBase + k_flowEndpoint
+            }
         }
         
         activityIndicator = UIActivityIndicatorView(style: .gray)
@@ -229,5 +239,16 @@ extension NCLoginWeb: WKNavigationDelegate {
     public func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
         activityIndicator.stopAnimating()
         print("didFinishProvisionalNavigation");
+        
+        if loginFlowV2Available {
+            
+            NCCommunication.sharedInstance.getLoginFlowV2Poll(token: loginFlowV2Token, endpoint: loginFlowV2Endpoint) { (server, loginName, appPassword, errorCode, errorDescription) in
+                
+                if errorCode == 0 {
+                    print("")
+                }
+            }
+            
+        }
     }
 }