Skip to main content

start writing a faster path for dealing with updates

ID
8039a1d
date
2023-06-09 22:22:57+00:00
author
Alex Chan <alex@alexwlchan.net>
parent
5fda324
message
start writing a faster path for dealing with updates
changed files
1 file, 24 additions, 1 deletion

Changed files

BlinkReviewer/BlinkReviewer/Photos/PhotosLibrary.swift (2796) → BlinkReviewer/BlinkReviewer/Photos/PhotosLibrary.swift (3802)

diff --git a/BlinkReviewer/BlinkReviewer/Photos/PhotosLibrary.swift b/BlinkReviewer/BlinkReviewer/Photos/PhotosLibrary.swift
index 0ee586e..7034eec 100644
--- a/BlinkReviewer/BlinkReviewer/Photos/PhotosLibrary.swift
+++ b/BlinkReviewer/BlinkReviewer/Photos/PhotosLibrary.swift
@@ -36,8 +36,31 @@ class PhotosLibrary: NSObject, ObservableObject, PHPhotoLibraryChangeObserver {
     func photoLibraryDidChange(_ changeInstance: PHChange) {
         print("calling photoLibraryDidChange")
         print(changeInstance.description)
-        updateStatus(isChange: true)
+        updateStatus(changeInstance)
     }
+    
+    private func updateStatus(_ changeInstance: PHChange) {
+        DispatchQueue.main.async {
+            let options = PHFetchOptions()
+            options.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)]
+            options.fetchLimit = 500
+            
+//            print()
+            
+            if let changeDetails = changeInstance.changeDetails(for: self.assets2) {
+                self.assets2 = changeDetails.fetchResultAfterChanges
+            } else {
+                self.assets2 = PHAsset.fetchAssets(with: PHAssetMediaType.image, options: options)
+            }
+
+            self.approvedAssets = PHAsset.fetchAssets(in: self.approved, options: nil)
+            self.rejectedAssets = PHAsset.fetchAssets(in: self.rejected, options: nil)
+            self.needsActionAssets = PHAsset.fetchAssets(in: self.needsAction, options: nil)
+            
+            self.isPhotoLibraryAuthorized = PHPhotoLibrary.authorizationStatus() == .authorized
+        }
+    }
+
 
     private func updateStatus(isChange: Bool) {
         DispatchQueue.main.async {