From adc2db9bb29e7f316c46b6de679db1522ffc9cc8 Mon Sep 17 00:00:00 2001
From: 杨锴 <841720330@qq.com>
Date: 星期五, 23 八月 2024 11:39:37 +0800
Subject: [PATCH] fix

---
 Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZPhotoPickerController.m |   32 +++++++++++++++++++++++---------
 1 files changed, 23 insertions(+), 9 deletions(-)

diff --git a/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZPhotoPickerController.m b/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZPhotoPickerController.m
index d3a801f..234a90a 100755
--- a/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZPhotoPickerController.m
+++ b/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZPhotoPickerController.m
@@ -151,7 +151,6 @@
         [self configCollectionView];
         self->_collectionView.hidden = YES;
         [self configBottomToolBar];
-        [self refreshBottomToolBarStatus];
         [self prepareScrollCollectionViewToBottom];
     });
 }
@@ -966,16 +965,12 @@
         [selectedAssets addObject:model.asset];
     }
     // 拿到了最新的models,在此刷新照片选中状态
-    // 由于可能有照片权限变化,也需要刷新selectedModels https://github.com/banchichen/TZImagePickerController/pull/1658
-    NSMutableArray *newSelectedModels = [NSMutableArray array];
     for (TZAssetModel *model in _models) {
         model.isSelected = NO;
         if ([selectedAssets containsObject:model.asset]) {
             model.isSelected = YES;
-            [newSelectedModels addObject:model];
         }
     }
-    tzImagePickerVc.selectedModels = newSelectedModels;
 }
 
 /// 选中/取消选中某张照片
@@ -1115,10 +1110,14 @@
         PHFetchResultChangeDetails *changeDetail = [changeInstance changeDetailsForFetchResult:self.model.result];
         if (changeDetail == nil) return;
         if ([[TZImageManager manager] isPHAuthorizationStatusLimited]) {
-            self.model.result = changeDetail.fetchResultAfterChanges;
-            self.model.count = changeDetail.fetchResultAfterChanges.count;
-            [self fetchAssetModels];
-        } else if (changeDetail.hasIncrementalChanges == NO) {
+            NSArray *changedObjects = [changeDetail changedObjects];
+            changeDetail = [PHFetchResultChangeDetails changeDetailsFromFetchResult:self.model.result toFetchResult:changeDetail.fetchResultAfterChanges changedObjects:changedObjects];
+            if (changeDetail && changeDetail.removedObjects.count) {
+                [self handleRemovedAssets:changeDetail.removedObjects];
+            }
+        }
+
+        if (changeDetail.hasIncrementalChanges == NO) {
             [self.model refreshFetchResult];
             [self fetchAssetModels];
         } else {
@@ -1134,6 +1133,21 @@
     });
 }
 
+- (void)handleRemovedAssets:(NSArray<PHAsset *> *)removedObjects {
+    TZImagePickerController *tzImagePickerVc = (TZImagePickerController *)self.navigationController;
+    for (PHAsset *asset in removedObjects) {
+        Boolean isSelected = [tzImagePickerVc.selectedAssetIds containsObject:asset.localIdentifier];
+        if (!isSelected) continue;
+        NSArray *selectedModels = [NSArray arrayWithArray:tzImagePickerVc.selectedModels];
+        for (TZAssetModel *model_item in selectedModels) {
+            if ([asset.localIdentifier isEqualToString:model_item.asset.localIdentifier]) {
+                [tzImagePickerVc removeSelectedModel:model_item];
+            }
+        }
+        [self refreshBottomToolBarStatus];
+    }
+}
+
 #pragma mark - Asset Caching
 
 - (void)resetCachedAssets {

--
Gitblit v1.7.1