Commit febc6b3f authored by yuzheng's avatar yuzheng

优化iCloud同步失败的判断

parent 591c5957
...@@ -168,13 +168,12 @@ ...@@ -168,13 +168,12 @@
} }
_bigImageRequestID = [[TZImageManager manager] requestImageDataForAsset:_model.asset completion:^(NSData *imageData, NSString *dataUTI, UIImageOrientation orientation, NSDictionary *info) { _bigImageRequestID = [[TZImageManager manager] requestImageDataForAsset:_model.asset completion:^(NSData *imageData, NSString *dataUTI, UIImageOrientation orientation, NSDictionary *info) {
if (!imageData && [info[PHImageResultIsInCloudKey] boolValue]) { BOOL iCloudSyncFailed = !imageData && [TZCommonTools isICloudSyncError:info[PHImageErrorKey]];
self.model.iCloudFailed = YES; self.model.iCloudFailed = iCloudSyncFailed;
if (self.didSelectPhotoBlock) { if (iCloudSyncFailed && self.didSelectPhotoBlock) {
self.didSelectPhotoBlock(YES); self.didSelectPhotoBlock(YES);
self.selectImageView.image = self.photoDefImage; self.selectImageView.image = self.photoDefImage;
} }
}
[self hideProgressView]; [self hideProgressView];
} progressHandler:^(double progress, NSError *error, BOOL *stop, NSDictionary *info) { } progressHandler:^(double progress, NSError *error, BOOL *stop, NSDictionary *info) {
if (self.model.isSelected) { if (self.model.isSelected) {
...@@ -194,13 +193,12 @@ ...@@ -194,13 +193,12 @@
}]; }];
if (_model.type == TZAssetCellTypeVideo) { if (_model.type == TZAssetCellTypeVideo) {
[[TZImageManager manager] getVideoWithAsset:_model.asset completion:^(AVPlayerItem *playerItem, NSDictionary *info) { [[TZImageManager manager] getVideoWithAsset:_model.asset completion:^(AVPlayerItem *playerItem, NSDictionary *info) {
if (!playerItem && [info[PHImageResultIsInCloudKey] boolValue]) { BOOL iCloudSyncFailed = !playerItem && [TZCommonTools isICloudSyncError:info[PHImageErrorKey]];
self.model.iCloudFailed = iCloudSyncFailed;
if (iCloudSyncFailed && self.didSelectPhotoBlock) {
dispatch_async(dispatch_get_main_queue(), ^{ dispatch_async(dispatch_get_main_queue(), ^{
self->_model.iCloudFailed = YES; self.didSelectPhotoBlock(YES);
if (self->_didSelectPhotoBlock) { self.selectImageView.image = self.photoDefImage;
self->_didSelectPhotoBlock(YES);
self->_selectImageView.image = self.photoDefImage;
}
}); });
} }
}]; }];
......
...@@ -305,6 +305,7 @@ ...@@ -305,6 +305,7 @@
+ (NSDictionary *)tz_getInfoDictionary; + (NSDictionary *)tz_getInfoDictionary;
+ (BOOL)tz_isRightToLeftLayout; + (BOOL)tz_isRightToLeftLayout;
+ (void)configBarButtonItem:(UIBarButtonItem *)item tzImagePickerVc:(TZImagePickerController *)tzImagePickerVc; + (void)configBarButtonItem:(UIBarButtonItem *)item tzImagePickerVc:(TZImagePickerController *)tzImagePickerVc;
+ (BOOL)isICloudSyncError:(NSError *)error;
@end @end
......
...@@ -913,6 +913,14 @@ ...@@ -913,6 +913,14 @@
[item setTitleTextAttributes:textAttrs forState:UIControlStateNormal]; [item setTitleTextAttributes:textAttrs forState:UIControlStateNormal];
} }
+ (BOOL)isICloudSyncError:(NSError *)error {
if (!error) return NO;
if ([error.domain isEqualToString:@"CKErrorDomain"] || [error.domain isEqualToString:@"CloudPhotoLibraryErrorDomain"]) {
return YES;
}
return NO;
}
@end @end
......
...@@ -170,12 +170,6 @@ ...@@ -170,12 +170,6 @@
if (model.type == TZAssetModelMediaTypePhotoGif) { if (model.type == TZAssetModelMediaTypePhotoGif) {
// 先显示缩略图 // 先显示缩略图
[[TZImageManager manager] getPhotoWithAsset:model.asset completion:^(UIImage *photo, NSDictionary *info, BOOL isDegraded) { [[TZImageManager manager] getPhotoWithAsset:model.asset completion:^(UIImage *photo, NSDictionary *info, BOOL isDegraded) {
BOOL iCloudSyncFailed = !photo && [info[PHImageResultIsInCloudKey] boolValue];
self.iCloudErrorLabel.hidden = !iCloudSyncFailed;
self.iCloudErrorIcon.hidden = !iCloudSyncFailed;
if (self.iCloudSyncFailedHandle) {
self.iCloudSyncFailedHandle(model.asset, iCloudSyncFailed);
}
if (photo) { if (photo) {
self.imageView.image = photo; self.imageView.image = photo;
} }
...@@ -188,6 +182,13 @@ ...@@ -188,6 +182,13 @@
[[TZImageManager manager] getOriginalPhotoDataWithAsset:model.asset progressHandler:^(double progress, NSError *error, BOOL *stop, NSDictionary *info) { [[TZImageManager manager] getOriginalPhotoDataWithAsset:model.asset progressHandler:^(double progress, NSError *error, BOOL *stop, NSDictionary *info) {
progress = progress > 0.02 ? progress : 0.02; progress = progress > 0.02 ? progress : 0.02;
dispatch_async(dispatch_get_main_queue(), ^{ dispatch_async(dispatch_get_main_queue(), ^{
BOOL iCloudSyncFailed = [TZCommonTools isICloudSyncError:error];
self.iCloudErrorLabel.hidden = !iCloudSyncFailed;
self.iCloudErrorIcon.hidden = !iCloudSyncFailed;
if (self.iCloudSyncFailedHandle) {
self.iCloudSyncFailedHandle(model.asset, iCloudSyncFailed);
}
self.progressView.progress = progress; self.progressView.progress = progress;
if (progress >= 1) { if (progress >= 1) {
self.progressView.hidden = YES; self.progressView.hidden = YES;
...@@ -223,7 +224,7 @@ ...@@ -223,7 +224,7 @@
_asset = asset; _asset = asset;
self.imageRequestID = [[TZImageManager manager] getPhotoWithAsset:asset completion:^(UIImage *photo, NSDictionary *info, BOOL isDegraded) { self.imageRequestID = [[TZImageManager manager] getPhotoWithAsset:asset completion:^(UIImage *photo, NSDictionary *info, BOOL isDegraded) {
BOOL iCloudSyncFailed = !photo && [info[PHImageResultIsInCloudKey] boolValue]; BOOL iCloudSyncFailed = !photo && [TZCommonTools isICloudSyncError:info[PHImageErrorKey]];
self.iCloudErrorLabel.hidden = !iCloudSyncFailed; self.iCloudErrorLabel.hidden = !iCloudSyncFailed;
self.iCloudErrorIcon.hidden = !iCloudSyncFailed; self.iCloudErrorIcon.hidden = !iCloudSyncFailed;
if (self.iCloudSyncFailedHandle) { if (self.iCloudSyncFailedHandle) {
...@@ -442,7 +443,7 @@ ...@@ -442,7 +443,7 @@
if (self.model && self.model.asset) { if (self.model && self.model.asset) {
[[TZImageManager manager] getPhotoWithAsset:self.model.asset completion:^(UIImage *photo, NSDictionary *info, BOOL isDegraded) { [[TZImageManager manager] getPhotoWithAsset:self.model.asset completion:^(UIImage *photo, NSDictionary *info, BOOL isDegraded) {
BOOL iCloudSyncFailed = !photo && [info[PHImageResultIsInCloudKey] boolValue]; BOOL iCloudSyncFailed = !photo && [TZCommonTools isICloudSyncError:info[PHImageErrorKey]];
self.iCloudErrorLabel.hidden = !iCloudSyncFailed; self.iCloudErrorLabel.hidden = !iCloudSyncFailed;
self.iCloudErrorIcon.hidden = !iCloudSyncFailed; self.iCloudErrorIcon.hidden = !iCloudSyncFailed;
if (self.iCloudSyncFailedHandle) { if (self.iCloudSyncFailedHandle) {
...@@ -454,7 +455,7 @@ ...@@ -454,7 +455,7 @@
}]; }];
[[TZImageManager manager] getVideoWithAsset:self.model.asset completion:^(AVPlayerItem *playerItem, NSDictionary *info) { [[TZImageManager manager] getVideoWithAsset:self.model.asset completion:^(AVPlayerItem *playerItem, NSDictionary *info) {
dispatch_async(dispatch_get_main_queue(), ^{ dispatch_async(dispatch_get_main_queue(), ^{
BOOL iCloudSyncFailed = !playerItem && [info[PHImageResultIsInCloudKey] boolValue]; BOOL iCloudSyncFailed = !playerItem && [TZCommonTools isICloudSyncError:info[PHImageErrorKey]];
self.iCloudErrorLabel.hidden = !iCloudSyncFailed; self.iCloudErrorLabel.hidden = !iCloudSyncFailed;
self.iCloudErrorIcon.hidden = !iCloudSyncFailed; self.iCloudErrorIcon.hidden = !iCloudSyncFailed;
if (self.iCloudSyncFailedHandle) { if (self.iCloudSyncFailedHandle) {
......
...@@ -64,13 +64,11 @@ ...@@ -64,13 +64,11 @@
- (void)configMoviePlayer { - (void)configMoviePlayer {
[[TZImageManager manager] getPhotoWithAsset:_model.asset completion:^(UIImage *photo, NSDictionary *info, BOOL isDegraded) { [[TZImageManager manager] getPhotoWithAsset:_model.asset completion:^(UIImage *photo, NSDictionary *info, BOOL isDegraded) {
if (!photo && [info[PHImageResultIsInCloudKey] boolValue]) { BOOL iCloudSyncFailed = !photo && [TZCommonTools isICloudSyncError:info[PHImageErrorKey]];
self.iCloudErrorView.hidden = NO; self.iCloudErrorView.hidden = !iCloudSyncFailed;
}
if (!isDegraded && photo) { if (!isDegraded && photo) {
self->_cover = photo; self->_cover = photo;
self->_doneButton.enabled = YES; self->_doneButton.enabled = YES;
self.iCloudErrorView.hidden = YES;
} }
}]; }];
[[TZImageManager manager] getVideoWithAsset:_model.asset completion:^(AVPlayerItem *playerItem, NSDictionary *info) { [[TZImageManager manager] getVideoWithAsset:_model.asset completion:^(AVPlayerItem *playerItem, NSDictionary *info) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment