Skip to main content

keep cranking away at review latency

ID
af7cab6
date
2023-06-10 08:00:20+00:00
author
Alex Chan <alex@alexwlchan.net>
parent
2f376ec
message
keep cranking away at review latency
changed files
4 files, 18 additions, 12 deletions

Changed files

BlinkReviewer/BlinkReviewer/BlinkReviewerApp.swift (338) → BlinkReviewer/BlinkReviewer/BlinkReviewerApp.swift (321)

diff --git a/BlinkReviewer/BlinkReviewer/BlinkReviewerApp.swift b/BlinkReviewer/BlinkReviewer/BlinkReviewerApp.swift
index 800e20f..fb7b1d9 100644
--- a/BlinkReviewer/BlinkReviewer/BlinkReviewerApp.swift
+++ b/BlinkReviewer/BlinkReviewer/BlinkReviewerApp.swift
@@ -13,8 +13,7 @@ struct BlinkReviewerApp: App {
     
     var body: some Scene {
         WindowGroup {
-            PhotoReviewer()
-                .environmentObject(photosLibrary)
+            PhotoReviewer().environmentObject(photosLibrary)
         }
     }
 }

BlinkReviewer/BlinkReviewer/Photos/PhotosLibrary.swift (6756) → BlinkReviewer/BlinkReviewer/Photos/PhotosLibrary.swift (6798)

diff --git a/BlinkReviewer/BlinkReviewer/Photos/PhotosLibrary.swift b/BlinkReviewer/BlinkReviewer/Photos/PhotosLibrary.swift
index 59fffe6..d1a7c6c 100644
--- a/BlinkReviewer/BlinkReviewer/Photos/PhotosLibrary.swift
+++ b/BlinkReviewer/BlinkReviewer/Photos/PhotosLibrary.swift
@@ -33,7 +33,7 @@ class PhotosLibrary: NSObject, ObservableObject, PHPhotoLibraryChangeObserver {
     }
 
     func photoLibraryDidChange(_ changeInstance: PHChange) {
-        print("calling photoLibraryDidChange")
+        print("--> calling photoLibraryDidChange \(changeInstance.description)")
         print(changeInstance.description)
         updateStatus(changeInstance)
     }
@@ -63,25 +63,25 @@ class PhotosLibrary: NSObject, ObservableObject, PHPhotoLibraryChangeObserver {
             if let assetsChangeDetails = changeInstance.changeDetails(for: self.assets2) {
                 self.assets2 = assetsChangeDetails.fetchResultAfterChanges
             } else {
-                self.assets2 = PHAsset.fetchAssets(with: PHAssetMediaType.image, options: options)
+//                self.assets2 = PHAsset.fetchAssets(with: PHAssetMediaType.image, options: options)
             }
             
             if let approvedChangeDetails = changeInstance.changeDetails(for: self.approvedAssets) {
                 self.approvedAssets = approvedChangeDetails.fetchResultAfterChanges
             } else {
-                self.approvedAssets = PHAsset.fetchAssets(in: self.approved, options: nil)
+//                self.approvedAssets = PHAsset.fetchAssets(in: self.approved, options: nil)
             }
             
             if let rejectedChangeDetails = changeInstance.changeDetails(for: self.rejectedAssets) {
                 self.rejectedAssets = rejectedChangeDetails.fetchResultAfterChanges
             } else {
-                self.rejectedAssets = PHAsset.fetchAssets(in: self.rejected, options: nil)
+//                self.rejectedAssets = PHAsset.fetchAssets(in: self.rejected, options: nil)
             }
             
             if let needsActionChangeDetails = changeInstance.changeDetails(for: self.needsActionAssets) {
                 self.needsActionAssets = needsActionChangeDetails.fetchResultAfterChanges
             } else {
-                self.needsActionAssets = PHAsset.fetchAssets(in: self.needsAction, options: nil)
+//                self.needsActionAssets = PHAsset.fetchAssets(in: self.needsAction, options: nil)
             }
             
             printElapsed("get all photos data (update)")

BlinkReviewer/BlinkReviewer/Views/PhotoReviewer.swift (10284) → BlinkReviewer/BlinkReviewer/Views/PhotoReviewer.swift (10497)

diff --git a/BlinkReviewer/BlinkReviewer/Views/PhotoReviewer.swift b/BlinkReviewer/BlinkReviewer/Views/PhotoReviewer.swift
index f4a8985..20e5ee6 100644
--- a/BlinkReviewer/BlinkReviewer/Views/PhotoReviewer.swift
+++ b/BlinkReviewer/BlinkReviewer/Views/PhotoReviewer.swift
@@ -104,12 +104,17 @@ struct PhotoReviewer: View {
                 let needsAction = getAlbum(withName: "Needs Action")
             
                 try! PHPhotoLibrary.shared().performChangesAndWait {
-                    // Strictly speaking, the first condition is a combination of two:
+                    // The first condition is a combination of two:
                     //
-                    //   1. The action is `toggle-approved` and the photo is approved,
-                    //      in which case toggling means un-approving it.
-                    //   2. The action is anything else and the photo is approved, in
-                    //      which case setting the new status means removing approved.
+                    //      -- the photo is already approved and you hit the "approve" hotkey,
+                    //      -- so un-approve it
+                    //      state == .Approved && e.characters == "1"
+                    //
+                    //      -- the photo is already approved and you selected a different review
+                    //      -- state, so unapprove it
+                    //      state == .Approved && e.characters != "1"
+                    //
+                    // We can optimise it into a single case, but it does make sense!
                     //
                     // Similar logic applies for all three conditions.
                     if state == .Approved {

BlinkReviewer/BlinkReviewer/Views/Thumbnails/NewThumbnailImage.swift (1827) → BlinkReviewer/BlinkReviewer/Views/Thumbnails/NewThumbnailImage.swift (1932)

diff --git a/BlinkReviewer/BlinkReviewer/Views/Thumbnails/NewThumbnailImage.swift b/BlinkReviewer/BlinkReviewer/Views/Thumbnails/NewThumbnailImage.swift
index 25a2503..6b3f7a8 100644
--- a/BlinkReviewer/BlinkReviewer/Views/Thumbnails/NewThumbnailImage.swift
+++ b/BlinkReviewer/BlinkReviewer/Views/Thumbnails/NewThumbnailImage.swift
@@ -24,6 +24,8 @@ struct NewThumbnailImage: View {
     // `body` method, which is too late!  So instead we have the parent
     // view call into PhotosLibrary and pass in the relevant values here.
     init(_ assetImage: PHAssetImage, state: ReviewState?, isFavorite: Bool, isFocused: Bool) {
+        print("Redrawing thumbnail image! \(assetImage.asset?.localIdentifier ?? "(unknown)")")
+        
         self.assetImage = assetImage
         self.state = state
         self.isFavorite = isFavorite