Allow opening the photo directly in Photos
- ID
d55716d- date
2023-06-18 16:42:37+00:00- author
Alex Chan <alex@alexwlchan.net>- parent
bd29fe6- message
Allow opening the photo directly in Photos- changed files
3 files, 25 additions, 10 deletions
Changed files
BlinkReviewer/Blink.xcodeproj/project.pbxproj (35177) → BlinkReviewer/Blink.xcodeproj/project.pbxproj (35247)
diff --git a/BlinkReviewer/Blink.xcodeproj/project.pbxproj b/BlinkReviewer/Blink.xcodeproj/project.pbxproj
index 7e5fe81..1116e55 100644
--- a/BlinkReviewer/Blink.xcodeproj/project.pbxproj
+++ b/BlinkReviewer/Blink.xcodeproj/project.pbxproj
@@ -604,8 +604,9 @@
CODE_SIGN_ENTITLEMENTS = Blink/Blink.entitlements;
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
- CURRENT_PROJECT_VERSION = 86;
+ CURRENT_PROJECT_VERSION = 89;
DEVELOPMENT_ASSET_PATHS = "\"Blink/Preview Content\"";
+ ENABLE_HARDENED_RUNTIME = YES;
ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_KEY_NSHumanReadableCopyright = "Made by Alex Chan <alex@alexwlchan.net>";
@@ -631,8 +632,9 @@
CODE_SIGN_ENTITLEMENTS = Blink/Blink.entitlements;
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
- CURRENT_PROJECT_VERSION = 86;
+ CURRENT_PROJECT_VERSION = 89;
DEVELOPMENT_ASSET_PATHS = "\"Blink/Preview Content\"";
+ ENABLE_HARDENED_RUNTIME = YES;
ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_KEY_NSHumanReadableCopyright = "Made by Alex Chan <alex@alexwlchan.net>";
@@ -656,7 +658,7 @@
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 86;
+ CURRENT_PROJECT_VERSION = 89;
GENERATE_INFOPLIST_FILE = YES;
MACOSX_DEPLOYMENT_TARGET = 13.3;
MARKETING_VERSION = 1.0;
@@ -674,7 +676,7 @@
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 86;
+ CURRENT_PROJECT_VERSION = 89;
GENERATE_INFOPLIST_FILE = YES;
MACOSX_DEPLOYMENT_TARGET = 13.3;
MARKETING_VERSION = 1.0;
@@ -691,7 +693,7 @@
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 86;
+ CURRENT_PROJECT_VERSION = 89;
GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = net.alexwlchan.BlinkReviewerUITests;
@@ -707,7 +709,7 @@
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 86;
+ CURRENT_PROJECT_VERSION = 89;
GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = net.alexwlchan.BlinkReviewerUITests;
BlinkReviewer/Blink/Blink.entitlements (322) → BlinkReviewer/Blink/Blink.entitlements (328)
diff --git a/BlinkReviewer/Blink/Blink.entitlements b/BlinkReviewer/Blink/Blink.entitlements
index f2ef3ae..73988dd 100644
--- a/BlinkReviewer/Blink/Blink.entitlements
+++ b/BlinkReviewer/Blink/Blink.entitlements
@@ -2,9 +2,9 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
- <key>com.apple.security.app-sandbox</key>
- <true/>
- <key>com.apple.security.files.user-selected.read-only</key>
- <true/>
+ <key>com.apple.security.automation.apple-events</key>
+ <true/>
+ <key>com.apple.security.personal-information.photos-library</key>
+ <true/>
</dict>
</plist>
BlinkReviewer/Blink/Views/PhotoReviewer.swift (13062) → BlinkReviewer/Blink/Views/PhotoReviewer.swift (13551)
diff --git a/BlinkReviewer/Blink/Views/PhotoReviewer.swift b/BlinkReviewer/Blink/Views/PhotoReviewer.swift
index d43334f..3cd246f 100644
--- a/BlinkReviewer/Blink/Views/PhotoReviewer.swift
+++ b/BlinkReviewer/Blink/Views/PhotoReviewer.swift
@@ -303,6 +303,19 @@ struct PhotoReviewer: View {
}
}
return nil
+
+ case let e where e.characters == "o":
+ let task = Process()
+ task.launchPath = "/usr/bin/osascript"
+ task.arguments = ["-e", """
+ tell application "Photos"
+ spotlight media item id \"\(focusedAsset.localIdentifier)\"
+ activate
+ end tell
+ """]
+
+ try! task.run()
+ return nil
default:
logger.info("Received unhandled keyboard event: \(event, privacy: .public)")