|
@@ -1425,23 +1425,36 @@
|
|
|
return [NSString stringWithFormat:@"%f", [[NSDate date] timeIntervalSince1970]];
|
|
|
}
|
|
|
|
|
|
-+ (void)extractImageVideoFromAssetLocalIdentifierForUpload:(tableMetadata *)metadata completion:(void(^)(tableMetadata *metadataForUpload))completion
|
|
|
++ (void)extractImageVideoFromAssetLocalIdentifierForUpload:(tableMetadata *)metadata assetLocalIdentifier:(NSString *)assetLocalIdentifier completion:(void(^)(tableMetadata *metadataForUpload, NSURL *url))completion
|
|
|
{
|
|
|
- PHFetchResult *result = [PHAsset fetchAssetsWithLocalIdentifiers:@[metadata.assetLocalIdentifier] options:nil];
|
|
|
+ PHFetchResult *result;
|
|
|
+
|
|
|
+ if (metadata) {
|
|
|
+ result = [PHAsset fetchAssetsWithLocalIdentifiers:@[metadata.assetLocalIdentifier] options:nil];
|
|
|
+ } else {
|
|
|
+ result = [PHAsset fetchAssetsWithLocalIdentifiers:@[assetLocalIdentifier] options:nil];
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
if (!result.count) {
|
|
|
- [[NCManageDatabase sharedInstance] deleteMetadataWithPredicate:[NSPredicate predicateWithFormat:@"ocId == %@", metadata.ocId]];
|
|
|
- [[NSNotificationCenter defaultCenter] postNotificationOnMainThreadName:k_notificationCenter_uploadedFile object:nil userInfo:@{@"metadata": metadata, @"errorCode": @(k_CCErrorInternalError), @"errorDescription": @"Error photo/video not found, remove from upload"}];
|
|
|
- completion(nil);
|
|
|
+ if (metadata) {
|
|
|
+ [[NCManageDatabase sharedInstance] deleteMetadataWithPredicate:[NSPredicate predicateWithFormat:@"ocId == %@", metadata.ocId]];
|
|
|
+ [[NSNotificationCenter defaultCenter] postNotificationOnMainThreadName:k_notificationCenter_uploadedFile object:nil userInfo:@{@"metadata": metadata, @"errorCode": @(k_CCErrorInternalError), @"errorDescription": @"Error photo/video not found, remove from upload"}];
|
|
|
+ }
|
|
|
+ completion(nil, nil);
|
|
|
return;
|
|
|
}
|
|
|
+
|
|
|
PHAsset *asset = result[0];
|
|
|
|
|
|
- tableAccount *tableAccount = [[NCManageDatabase sharedInstance] getAccountWithPredicate:[NSPredicate predicateWithFormat:@"account == %@", metadata.account]];
|
|
|
- if (tableAccount == nil) {
|
|
|
- [[NCManageDatabase sharedInstance] deleteMetadataWithPredicate:[NSPredicate predicateWithFormat:@"ocId == %@", metadata.ocId]];
|
|
|
- [[NSNotificationCenter defaultCenter] postNotificationOnMainThreadName:k_notificationCenter_uploadedFile object:nil userInfo:@{@"metadata": metadata, @"errorCode": @(k_CCErrorInternalError), @"errorDescription": @"Upload error, account not found"}];
|
|
|
- completion(nil);
|
|
|
- return;
|
|
|
+ if (metadata) {
|
|
|
+ tableAccount *tableAccount = [[NCManageDatabase sharedInstance] getAccountWithPredicate:[NSPredicate predicateWithFormat:@"account == %@", metadata.account]];
|
|
|
+ if (tableAccount == nil) {
|
|
|
+ [[NCManageDatabase sharedInstance] deleteMetadataWithPredicate:[NSPredicate predicateWithFormat:@"ocId == %@", metadata.ocId]];
|
|
|
+ [[NSNotificationCenter defaultCenter] postNotificationOnMainThreadName:k_notificationCenter_uploadedFile object:nil userInfo:@{@"metadata": metadata, @"errorCode": @(k_CCErrorInternalError), @"errorDescription": @"Upload error, account not found"}];
|
|
|
+ completion(nil, nil);
|
|
|
+ return;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// IMAGE
|
|
@@ -1456,9 +1469,11 @@
|
|
|
NSLog(@"cacheAsset: %f", progress);
|
|
|
|
|
|
if (error) {
|
|
|
- [[NCManageDatabase sharedInstance] deleteMetadataWithPredicate:[NSPredicate predicateWithFormat:@"ocId == %@", metadata.ocId]];
|
|
|
- [[NSNotificationCenter defaultCenter] postNotificationOnMainThreadName:k_notificationCenter_uploadedFile object:nil userInfo:@{@"metadata": metadata, @"errorCode": @(error.code), @"errorDescription": [NSString stringWithFormat:@"Image request iCloud failed [%@]", error.description]}];
|
|
|
- completion(nil);
|
|
|
+ if (metadata) {
|
|
|
+ [[NCManageDatabase sharedInstance] deleteMetadataWithPredicate:[NSPredicate predicateWithFormat:@"ocId == %@", metadata.ocId]];
|
|
|
+ [[NSNotificationCenter defaultCenter] postNotificationOnMainThreadName:k_notificationCenter_uploadedFile object:nil userInfo:@{@"metadata": metadata, @"errorCode": @(error.code), @"errorDescription": [NSString stringWithFormat:@"Image request iCloud failed [%@]", error.description]}];
|
|
|
+ }
|
|
|
+ completion(nil, nil);
|
|
|
}
|
|
|
};
|
|
|
|
|
@@ -1472,26 +1487,41 @@
|
|
|
CIImage *ciImage = [CIImage imageWithData:imageData];
|
|
|
CIContext *context = [CIContext context];
|
|
|
imageData = [context JPEGRepresentationOfImage:ciImage colorSpace:ciImage.colorSpace options:@{}];
|
|
|
- NSString *fileNameJPEG = [[metadata.fileName lastPathComponent] stringByDeletingPathExtension];
|
|
|
- metadata.fileName = [fileNameJPEG stringByAppendingString:@".jpg"];
|
|
|
- metadata.fileNameView = metadata.fileName;
|
|
|
|
|
|
- // Change Metadata with new ocId, fileName, fileNameView
|
|
|
- [[NCManageDatabase sharedInstance] deleteMetadataWithPredicate:[NSPredicate predicateWithFormat:@"ocId == %@", metadata.ocId]];
|
|
|
- metadata.ocId = [CCUtility createMetadataIDFromAccount:metadata.account serverUrl:metadata.serverUrl fileNameView:metadata.fileNameView directory:false];
|
|
|
+ if (metadata) {
|
|
|
+ NSString *fileNameJPEG = [[metadata.fileName lastPathComponent] stringByDeletingPathExtension];
|
|
|
+ metadata.fileName = [fileNameJPEG stringByAppendingString:@".jpg"];
|
|
|
+ metadata.fileNameView = metadata.fileName;
|
|
|
+
|
|
|
+ // Change Metadata with new ocId, fileName, fileNameView
|
|
|
+ [[NCManageDatabase sharedInstance] deleteMetadataWithPredicate:[NSPredicate predicateWithFormat:@"ocId == %@", metadata.ocId]];
|
|
|
+ metadata.ocId = [CCUtility createMetadataIDFromAccount:metadata.account serverUrl:metadata.serverUrl fileNameView:metadata.fileNameView directory:false];
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- tableMetadata *metadataForUpload = [[NCManageDatabase sharedInstance] addMetadata:[CCUtility insertFileSystemInMetadata:metadata]];
|
|
|
- [imageData writeToFile:[CCUtility getDirectoryProviderStorageOcId:metadataForUpload.ocId fileNameView:metadataForUpload.fileNameView] options:NSDataWritingAtomic error:&error];
|
|
|
-
|
|
|
- if (error) {
|
|
|
- [[NCManageDatabase sharedInstance] deleteMetadataWithPredicate:[NSPredicate predicateWithFormat:@"ocId == %@", metadataForUpload.ocId]];
|
|
|
- [[NSNotificationCenter defaultCenter] postNotificationOnMainThreadName:k_notificationCenter_uploadedFile object:nil userInfo:@{@"metadata": metadata, @"errorCode": @(error.code), @"errorDescription": [NSString stringWithFormat:@"Image request failed [%@]", error.description]}];
|
|
|
- completion(nil);
|
|
|
+ if (metadata) {
|
|
|
+
|
|
|
+ tableMetadata *metadataForUpload = [[NCManageDatabase sharedInstance] addMetadata:[CCUtility insertFileSystemInMetadata:metadata]];
|
|
|
+ [imageData writeToFile:[CCUtility getDirectoryProviderStorageOcId:metadataForUpload.ocId fileNameView:metadataForUpload.fileNameView] options:NSDataWritingAtomic error:&error];
|
|
|
+
|
|
|
+ if (error) {
|
|
|
+ [[NCManageDatabase sharedInstance] deleteMetadataWithPredicate:[NSPredicate predicateWithFormat:@"ocId == %@", metadataForUpload.ocId]];
|
|
|
+ [[NSNotificationCenter defaultCenter] postNotificationOnMainThreadName:k_notificationCenter_uploadedFile object:nil userInfo:@{@"metadata": metadata, @"errorCode": @(error.code), @"errorDescription": [NSString stringWithFormat:@"Image request failed [%@]", error.description]}];
|
|
|
+ completion(nil, nil);
|
|
|
+
|
|
|
+ } else {
|
|
|
+
|
|
|
+ completion(metadataForUpload, nil);
|
|
|
+ }
|
|
|
|
|
|
} else {
|
|
|
|
|
|
- completion(metadataForUpload);
|
|
|
+ NSArray *resources = [PHAssetResource assetResourcesForAsset:asset];
|
|
|
+ NSString *orgFilename = ((PHAssetResource*)resources[0]).originalFilename;
|
|
|
+ NSURL *tmpDirURL = [NSURL fileURLWithPath:NSTemporaryDirectory() isDirectory:YES];
|
|
|
+ NSURL *fileURL = [tmpDirURL URLByAppendingPathComponent:orgFilename];
|
|
|
+ [imageData writeToFile:fileURL.absoluteString options:NSDataWritingAtomic error:&error];
|
|
|
+ completion(nil, fileURL);
|
|
|
}
|
|
|
}];
|
|
|
}
|
|
@@ -1507,9 +1537,11 @@
|
|
|
NSLog(@"cacheAsset: %f", progress);
|
|
|
|
|
|
if (error) {
|
|
|
- [[NCManageDatabase sharedInstance] deleteMetadataWithPredicate:[NSPredicate predicateWithFormat:@"ocId == %@", metadata.ocId]];
|
|
|
- [[NSNotificationCenter defaultCenter] postNotificationOnMainThreadName:k_notificationCenter_uploadedFile object:nil userInfo:@{@"metadata": metadata, @"errorCode": @(error.code), @"errorDescription": [NSString stringWithFormat:@"Video request iCloud failed [%@]", error.description]}];
|
|
|
- completion(nil);
|
|
|
+ if (metadata) {
|
|
|
+ [[NCManageDatabase sharedInstance] deleteMetadataWithPredicate:[NSPredicate predicateWithFormat:@"ocId == %@", metadata.ocId]];
|
|
|
+ [[NSNotificationCenter defaultCenter] postNotificationOnMainThreadName:k_notificationCenter_uploadedFile object:nil userInfo:@{@"metadata": metadata, @"errorCode": @(error.code), @"errorDescription": [NSString stringWithFormat:@"Video request iCloud failed [%@]", error.description]}];
|
|
|
+ }
|
|
|
+ completion(nil, nil);
|
|
|
}
|
|
|
};
|
|
|
|
|
@@ -1517,30 +1549,31 @@
|
|
|
|
|
|
if ([asset isKindOfClass:[AVURLAsset class]]) {
|
|
|
|
|
|
- NSURL *fileURL = [[NSURL alloc] initFileURLWithPath:[CCUtility getDirectoryProviderStorageOcId:metadata.ocId fileNameView:metadata.fileNameView]];
|
|
|
- NSError *error = nil;
|
|
|
-
|
|
|
- [[NSFileManager defaultManager] removeItemAtURL:fileURL error:nil];
|
|
|
- [[NSFileManager defaultManager] copyItemAtURL:[(AVURLAsset *)asset URL] toURL:fileURL error:&error];
|
|
|
-
|
|
|
- if (error) {
|
|
|
+ if (metadata) {
|
|
|
+
|
|
|
+ NSURL *fileURL = [[NSURL alloc] initFileURLWithPath:[CCUtility getDirectoryProviderStorageOcId:metadata.ocId fileNameView:metadata.fileNameView]];
|
|
|
+ NSError *error = nil;
|
|
|
+
|
|
|
+ [[NSFileManager defaultManager] removeItemAtURL:fileURL error:nil];
|
|
|
+ [[NSFileManager defaultManager] copyItemAtURL:[(AVURLAsset *)asset URL] toURL:fileURL error:&error];
|
|
|
+
|
|
|
dispatch_async(dispatch_get_main_queue(), ^{
|
|
|
- [[NCManageDatabase sharedInstance] deleteMetadataWithPredicate:[NSPredicate predicateWithFormat:@"ocId == %@", metadata.ocId]];
|
|
|
- [[NSNotificationCenter defaultCenter] postNotificationOnMainThreadName:k_notificationCenter_uploadedFile object:nil userInfo:@{@"metadata": metadata, @"errorCode": @(error.code), @"errorDescription": [NSString stringWithFormat:@"Video request iCloud failed [%@]", error.description]}];
|
|
|
- completion(nil);
|
|
|
+ if (error) {
|
|
|
+ [[NCManageDatabase sharedInstance] deleteMetadataWithPredicate:[NSPredicate predicateWithFormat:@"ocId == %@", metadata.ocId]];
|
|
|
+ [[NSNotificationCenter defaultCenter] postNotificationOnMainThreadName:k_notificationCenter_uploadedFile object:nil userInfo:@{@"metadata": metadata, @"errorCode": @(error.code), @"errorDescription": [NSString stringWithFormat:@"Video request iCloud failed [%@]", error.description]}];
|
|
|
+ completion(nil, nil);
|
|
|
+ } else {
|
|
|
+ // create Metadata for Upload
|
|
|
+ tableMetadata *metadataForUpload = [[NCManageDatabase sharedInstance] addMetadata:[CCUtility insertFileSystemInMetadata:metadata]];
|
|
|
+ completion(metadataForUpload, [(AVURLAsset *)asset URL]);
|
|
|
+ }
|
|
|
});
|
|
|
} else {
|
|
|
- dispatch_async(dispatch_get_main_queue(), ^{
|
|
|
-
|
|
|
- // create Metadata for Upload
|
|
|
- tableMetadata *metadataForUpload = [[NCManageDatabase sharedInstance] addMetadata:[CCUtility insertFileSystemInMetadata:metadata]];
|
|
|
- completion(metadataForUpload);
|
|
|
- });
|
|
|
+ completion(nil, [(AVURLAsset *)asset URL]);
|
|
|
}
|
|
|
}
|
|
|
}];
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
|
|
|
#pragma --------------------------------------------------------------------------------------------
|