From e9851a0d3e1c5e955c90f89d5903f11e426780ce Mon Sep 17 00:00:00 2001 From: Dave Gaeddert Date: Wed, 20 Jan 2021 16:48:44 -0600 Subject: [PATCH 1/2] Generate Safari extension --- PullApprove/PullApprove Extension/Info.plist | 33 ++ .../PullApprove_Extension.entitlements | 10 + .../SafariWebExtensionHandler.swift | 26 + .../PullApprove.xcodeproj/project.pbxproj | 560 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../UserInterfaceState.xcuserstate | Bin 0 -> 28793 bytes .../xcschemes/xcschememanagement.plist | 14 + PullApprove/PullApprove/AppDelegate.swift | 25 + .../AccentColor.colorset/Contents.json | 11 + .../AppIcon.appiconset/Contents.json | 60 ++ .../AppIcon.appiconset/icon-128.png | Bin 0 -> 1756 bytes .../AppIcon.appiconset/icon-16.png | Bin 0 -> 322 bytes .../PullApprove/Assets.xcassets/Contents.json | 6 + .../PullApprove/Base.lproj/Main.storyboard | 167 ++++++ PullApprove/PullApprove/Info.plist | 32 + .../PullApprove/PullApprove.entitlements | 10 + PullApprove/PullApprove/ViewController.swift | 51 ++ 18 files changed, 1020 insertions(+) create mode 100644 PullApprove/PullApprove Extension/Info.plist create mode 100644 PullApprove/PullApprove Extension/PullApprove_Extension.entitlements create mode 100644 PullApprove/PullApprove Extension/SafariWebExtensionHandler.swift create mode 100644 PullApprove/PullApprove.xcodeproj/project.pbxproj create mode 100644 PullApprove/PullApprove.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 PullApprove/PullApprove.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 PullApprove/PullApprove.xcodeproj/project.xcworkspace/xcuserdata/davegaeddert.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 PullApprove/PullApprove.xcodeproj/xcuserdata/davegaeddert.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 PullApprove/PullApprove/AppDelegate.swift create mode 100644 PullApprove/PullApprove/Assets.xcassets/AccentColor.colorset/Contents.json create mode 100644 PullApprove/PullApprove/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 PullApprove/PullApprove/Assets.xcassets/AppIcon.appiconset/icon-128.png create mode 100644 PullApprove/PullApprove/Assets.xcassets/AppIcon.appiconset/icon-16.png create mode 100644 PullApprove/PullApprove/Assets.xcassets/Contents.json create mode 100644 PullApprove/PullApprove/Base.lproj/Main.storyboard create mode 100644 PullApprove/PullApprove/Info.plist create mode 100644 PullApprove/PullApprove/PullApprove.entitlements create mode 100644 PullApprove/PullApprove/ViewController.swift diff --git a/PullApprove/PullApprove Extension/Info.plist b/PullApprove/PullApprove Extension/Info.plist new file mode 100644 index 0000000..2e3fef6 --- /dev/null +++ b/PullApprove/PullApprove Extension/Info.plist @@ -0,0 +1,33 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + PullApprove Extension + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSMinimumSystemVersion + $(MACOSX_DEPLOYMENT_TARGET) + NSExtension + + NSExtensionPointIdentifier + com.apple.Safari.web-extension + NSExtensionPrincipalClass + $(PRODUCT_MODULE_NAME).SafariWebExtensionHandler + + + diff --git a/PullApprove/PullApprove Extension/PullApprove_Extension.entitlements b/PullApprove/PullApprove Extension/PullApprove_Extension.entitlements new file mode 100644 index 0000000..f2ef3ae --- /dev/null +++ b/PullApprove/PullApprove Extension/PullApprove_Extension.entitlements @@ -0,0 +1,10 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.files.user-selected.read-only + + + diff --git a/PullApprove/PullApprove Extension/SafariWebExtensionHandler.swift b/PullApprove/PullApprove Extension/SafariWebExtensionHandler.swift new file mode 100644 index 0000000..b558220 --- /dev/null +++ b/PullApprove/PullApprove Extension/SafariWebExtensionHandler.swift @@ -0,0 +1,26 @@ +// +// SafariWebExtensionHandler.swift +// PullApprove Extension +// +// Created by Dave Gaeddert on 1/20/21. +// + +import SafariServices +import os.log + +let SFExtensionMessageKey = "message" + +class SafariWebExtensionHandler: NSObject, NSExtensionRequestHandling { + + func beginRequest(with context: NSExtensionContext) { + let item = context.inputItems[0] as! NSExtensionItem + let message = item.userInfo?[SFExtensionMessageKey] + os_log(.default, "Received message from browser.runtime.sendNativeMessage: %@", message as! CVarArg) + + let response = NSExtensionItem() + response.userInfo = [ SFExtensionMessageKey: [ "Response to": message ] ] + + context.completeRequest(returningItems: [response], completionHandler: nil) + } + +} diff --git a/PullApprove/PullApprove.xcodeproj/project.pbxproj b/PullApprove/PullApprove.xcodeproj/project.pbxproj new file mode 100644 index 0000000..a099116 --- /dev/null +++ b/PullApprove/PullApprove.xcodeproj/project.pbxproj @@ -0,0 +1,560 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + 627E0CB725B8DD0800A8449C /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 627E0CB625B8DD0800A8449C /* AppDelegate.swift */; }; + 627E0CBA25B8DD0800A8449C /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 627E0CB825B8DD0800A8449C /* Main.storyboard */; }; + 627E0CBC25B8DD0800A8449C /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 627E0CBB25B8DD0800A8449C /* ViewController.swift */; }; + 627E0CBE25B8DD0900A8449C /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 627E0CBD25B8DD0900A8449C /* Assets.xcassets */; }; + 627E0CC525B8DD0900A8449C /* PullApprove Extension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 627E0CC425B8DD0900A8449C /* PullApprove Extension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; + 627E0CCA25B8DD0900A8449C /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 627E0CC925B8DD0900A8449C /* Cocoa.framework */; }; + 627E0CCD25B8DD0900A8449C /* SafariWebExtensionHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 627E0CCC25B8DD0900A8449C /* SafariWebExtensionHandler.swift */; }; + 627E0CE825B8DD0A00A8449C /* PullApprove in Resources */ = {isa = PBXBuildFile; fileRef = 627E0CDA25B8DD0A00A8449C /* PullApprove */; }; + 627E0CE925B8DD0A00A8449C /* LICENSE in Resources */ = {isa = PBXBuildFile; fileRef = 627E0CDB25B8DD0A00A8449C /* LICENSE */; }; + 627E0CEA25B8DD0A00A8449C /* pullapprove-browser-extension.zip in Resources */ = {isa = PBXBuildFile; fileRef = 627E0CDC25B8DD0A00A8449C /* pullapprove-browser-extension.zip */; }; + 627E0CEB25B8DD0A00A8449C /* dist in Resources */ = {isa = PBXBuildFile; fileRef = 627E0CDD25B8DD0A00A8449C /* dist */; }; + 627E0CEC25B8DD0A00A8449C /* node_modules in Resources */ = {isa = PBXBuildFile; fileRef = 627E0CDE25B8DD0A00A8449C /* node_modules */; }; + 627E0CED25B8DD0A00A8449C /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 627E0CDF25B8DD0A00A8449C /* README.md */; }; + 627E0CEE25B8DD0A00A8449C /* img in Resources */ = {isa = PBXBuildFile; fileRef = 627E0CE025B8DD0A00A8449C /* img */; }; + 627E0CEF25B8DD0A00A8449C /* components in Resources */ = {isa = PBXBuildFile; fileRef = 627E0CE125B8DD0A00A8449C /* components */; }; + 627E0CF025B8DD0A00A8449C /* yarn.lock in Resources */ = {isa = PBXBuildFile; fileRef = 627E0CE225B8DD0A00A8449C /* yarn.lock */; }; + 627E0CF125B8DD0A00A8449C /* package.json in Resources */ = {isa = PBXBuildFile; fileRef = 627E0CE325B8DD0A00A8449C /* package.json */; }; + 627E0CF225B8DD0A00A8449C /* scripts in Resources */ = {isa = PBXBuildFile; fileRef = 627E0CE425B8DD0A00A8449C /* scripts */; }; + 627E0CF325B8DD0A00A8449C /* manifest.json in Resources */ = {isa = PBXBuildFile; fileRef = 627E0CE525B8DD0A00A8449C /* manifest.json */; }; + 627E0CF425B8DD0A00A8449C /* content.js in Resources */ = {isa = PBXBuildFile; fileRef = 627E0CE625B8DD0A00A8449C /* content.js */; }; + 627E0CF525B8DD0A00A8449C /* example.png in Resources */ = {isa = PBXBuildFile; fileRef = 627E0CE725B8DD0A00A8449C /* example.png */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 627E0CC625B8DD0900A8449C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 627E0CAA25B8DD0800A8449C /* Project object */; + proxyType = 1; + remoteGlobalIDString = 627E0CC325B8DD0900A8449C; + remoteInfo = "PullApprove Extension"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 627E0CD525B8DD0900A8449C /* Embed App Extensions */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 13; + files = ( + 627E0CC525B8DD0900A8449C /* PullApprove Extension.appex in Embed App Extensions */, + ); + name = "Embed App Extensions"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 627E0CB225B8DD0800A8449C /* PullApprove.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = PullApprove.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 627E0CB525B8DD0800A8449C /* PullApprove.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = PullApprove.entitlements; sourceTree = ""; }; + 627E0CB625B8DD0800A8449C /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 627E0CB925B8DD0800A8449C /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 627E0CBB25B8DD0800A8449C /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + 627E0CBD25B8DD0900A8449C /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 627E0CBF25B8DD0900A8449C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 627E0CC425B8DD0900A8449C /* PullApprove Extension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = "PullApprove Extension.appex"; sourceTree = BUILT_PRODUCTS_DIR; }; + 627E0CC925B8DD0900A8449C /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; + 627E0CCC25B8DD0900A8449C /* SafariWebExtensionHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SafariWebExtensionHandler.swift; sourceTree = ""; }; + 627E0CCE25B8DD0900A8449C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 627E0CCF25B8DD0900A8449C /* PullApprove_Extension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = PullApprove_Extension.entitlements; sourceTree = ""; }; + 627E0CDA25B8DD0A00A8449C /* PullApprove */ = {isa = PBXFileReference; lastKnownFileType = text; path = PullApprove; sourceTree = SOURCE_ROOT; }; + 627E0CDB25B8DD0A00A8449C /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; name = LICENSE; path = ../../LICENSE; sourceTree = ""; }; + 627E0CDC25B8DD0A00A8449C /* pullapprove-browser-extension.zip */ = {isa = PBXFileReference; lastKnownFileType = archive.zip; name = "pullapprove-browser-extension.zip"; path = "../../pullapprove-browser-extension.zip"; sourceTree = ""; }; + 627E0CDD25B8DD0A00A8449C /* dist */ = {isa = PBXFileReference; lastKnownFileType = folder; name = dist; path = ../../dist; sourceTree = ""; }; + 627E0CDE25B8DD0A00A8449C /* node_modules */ = {isa = PBXFileReference; lastKnownFileType = folder; name = node_modules; path = ../../node_modules; sourceTree = ""; }; + 627E0CDF25B8DD0A00A8449C /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../../README.md; sourceTree = ""; }; + 627E0CE025B8DD0A00A8449C /* img */ = {isa = PBXFileReference; lastKnownFileType = folder; name = img; path = ../../img; sourceTree = ""; }; + 627E0CE125B8DD0A00A8449C /* components */ = {isa = PBXFileReference; lastKnownFileType = folder; name = components; path = ../../components; sourceTree = ""; }; + 627E0CE225B8DD0A00A8449C /* yarn.lock */ = {isa = PBXFileReference; lastKnownFileType = text; name = yarn.lock; path = ../../yarn.lock; sourceTree = ""; }; + 627E0CE325B8DD0A00A8449C /* package.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; name = package.json; path = ../../package.json; sourceTree = ""; }; + 627E0CE425B8DD0A00A8449C /* scripts */ = {isa = PBXFileReference; lastKnownFileType = folder; name = scripts; path = ../../scripts; sourceTree = ""; }; + 627E0CE525B8DD0A00A8449C /* manifest.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; name = manifest.json; path = ../../manifest.json; sourceTree = ""; }; + 627E0CE625B8DD0A00A8449C /* content.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; name = content.js; path = ../../content.js; sourceTree = ""; }; + 627E0CE725B8DD0A00A8449C /* example.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = example.png; path = ../../example.png; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 627E0CAF25B8DD0800A8449C /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 627E0CC125B8DD0900A8449C /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 627E0CCA25B8DD0900A8449C /* Cocoa.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 627E0CA925B8DD0800A8449C = { + isa = PBXGroup; + children = ( + 627E0CB425B8DD0800A8449C /* PullApprove */, + 627E0CCB25B8DD0900A8449C /* PullApprove Extension */, + 627E0CC825B8DD0900A8449C /* Frameworks */, + 627E0CB325B8DD0800A8449C /* Products */, + ); + sourceTree = ""; + }; + 627E0CB325B8DD0800A8449C /* Products */ = { + isa = PBXGroup; + children = ( + 627E0CB225B8DD0800A8449C /* PullApprove.app */, + 627E0CC425B8DD0900A8449C /* PullApprove Extension.appex */, + ); + name = Products; + sourceTree = ""; + }; + 627E0CB425B8DD0800A8449C /* PullApprove */ = { + isa = PBXGroup; + children = ( + 627E0CB525B8DD0800A8449C /* PullApprove.entitlements */, + 627E0CB625B8DD0800A8449C /* AppDelegate.swift */, + 627E0CB825B8DD0800A8449C /* Main.storyboard */, + 627E0CBB25B8DD0800A8449C /* ViewController.swift */, + 627E0CBD25B8DD0900A8449C /* Assets.xcassets */, + 627E0CBF25B8DD0900A8449C /* Info.plist */, + ); + path = PullApprove; + sourceTree = ""; + }; + 627E0CC825B8DD0900A8449C /* Frameworks */ = { + isa = PBXGroup; + children = ( + 627E0CC925B8DD0900A8449C /* Cocoa.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 627E0CCB25B8DD0900A8449C /* PullApprove Extension */ = { + isa = PBXGroup; + children = ( + 627E0CD925B8DD0A00A8449C /* Resources */, + 627E0CCC25B8DD0900A8449C /* SafariWebExtensionHandler.swift */, + 627E0CCE25B8DD0900A8449C /* Info.plist */, + 627E0CCF25B8DD0900A8449C /* PullApprove_Extension.entitlements */, + ); + path = "PullApprove Extension"; + sourceTree = ""; + }; + 627E0CD925B8DD0A00A8449C /* Resources */ = { + isa = PBXGroup; + children = ( + 627E0CDA25B8DD0A00A8449C /* PullApprove */, + 627E0CDB25B8DD0A00A8449C /* LICENSE */, + 627E0CDC25B8DD0A00A8449C /* pullapprove-browser-extension.zip */, + 627E0CDD25B8DD0A00A8449C /* dist */, + 627E0CDE25B8DD0A00A8449C /* node_modules */, + 627E0CDF25B8DD0A00A8449C /* README.md */, + 627E0CE025B8DD0A00A8449C /* img */, + 627E0CE125B8DD0A00A8449C /* components */, + 627E0CE225B8DD0A00A8449C /* yarn.lock */, + 627E0CE325B8DD0A00A8449C /* package.json */, + 627E0CE425B8DD0A00A8449C /* scripts */, + 627E0CE525B8DD0A00A8449C /* manifest.json */, + 627E0CE625B8DD0A00A8449C /* content.js */, + 627E0CE725B8DD0A00A8449C /* example.png */, + ); + name = Resources; + path = "PullApprove Extension"; + sourceTree = SOURCE_ROOT; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 627E0CB125B8DD0800A8449C /* PullApprove */ = { + isa = PBXNativeTarget; + buildConfigurationList = 627E0CD625B8DD0900A8449C /* Build configuration list for PBXNativeTarget "PullApprove" */; + buildPhases = ( + 627E0CAE25B8DD0800A8449C /* Sources */, + 627E0CAF25B8DD0800A8449C /* Frameworks */, + 627E0CB025B8DD0800A8449C /* Resources */, + 627E0CD525B8DD0900A8449C /* Embed App Extensions */, + ); + buildRules = ( + ); + dependencies = ( + 627E0CC725B8DD0900A8449C /* PBXTargetDependency */, + ); + name = PullApprove; + productName = PullApprove; + productReference = 627E0CB225B8DD0800A8449C /* PullApprove.app */; + productType = "com.apple.product-type.application"; + }; + 627E0CC325B8DD0900A8449C /* PullApprove Extension */ = { + isa = PBXNativeTarget; + buildConfigurationList = 627E0CD225B8DD0900A8449C /* Build configuration list for PBXNativeTarget "PullApprove Extension" */; + buildPhases = ( + 627E0CC025B8DD0900A8449C /* Sources */, + 627E0CC125B8DD0900A8449C /* Frameworks */, + 627E0CC225B8DD0900A8449C /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "PullApprove Extension"; + productName = "PullApprove Extension"; + productReference = 627E0CC425B8DD0900A8449C /* PullApprove Extension.appex */; + productType = "com.apple.product-type.app-extension"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 627E0CAA25B8DD0800A8449C /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1230; + LastUpgradeCheck = 1230; + TargetAttributes = { + 627E0CB125B8DD0800A8449C = { + CreatedOnToolsVersion = 12.3; + }; + 627E0CC325B8DD0900A8449C = { + CreatedOnToolsVersion = 12.3; + }; + }; + }; + buildConfigurationList = 627E0CAD25B8DD0800A8449C /* Build configuration list for PBXProject "PullApprove" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 627E0CA925B8DD0800A8449C; + productRefGroup = 627E0CB325B8DD0800A8449C /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 627E0CB125B8DD0800A8449C /* PullApprove */, + 627E0CC325B8DD0900A8449C /* PullApprove Extension */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 627E0CB025B8DD0800A8449C /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 627E0CBE25B8DD0900A8449C /* Assets.xcassets in Resources */, + 627E0CBA25B8DD0800A8449C /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 627E0CC225B8DD0900A8449C /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 627E0CF525B8DD0A00A8449C /* example.png in Resources */, + 627E0CF025B8DD0A00A8449C /* yarn.lock in Resources */, + 627E0CF225B8DD0A00A8449C /* scripts in Resources */, + 627E0CEF25B8DD0A00A8449C /* components in Resources */, + 627E0CED25B8DD0A00A8449C /* README.md in Resources */, + 627E0CF425B8DD0A00A8449C /* content.js in Resources */, + 627E0CF325B8DD0A00A8449C /* manifest.json in Resources */, + 627E0CEB25B8DD0A00A8449C /* dist in Resources */, + 627E0CF125B8DD0A00A8449C /* package.json in Resources */, + 627E0CEE25B8DD0A00A8449C /* img in Resources */, + 627E0CE925B8DD0A00A8449C /* LICENSE in Resources */, + 627E0CEA25B8DD0A00A8449C /* pullapprove-browser-extension.zip in Resources */, + 627E0CEC25B8DD0A00A8449C /* node_modules in Resources */, + 627E0CE825B8DD0A00A8449C /* PullApprove in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 627E0CAE25B8DD0800A8449C /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 627E0CBC25B8DD0800A8449C /* ViewController.swift in Sources */, + 627E0CB725B8DD0800A8449C /* AppDelegate.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 627E0CC025B8DD0900A8449C /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 627E0CCD25B8DD0900A8449C /* SafariWebExtensionHandler.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 627E0CC725B8DD0900A8449C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 627E0CC325B8DD0900A8449C /* PullApprove Extension */; + targetProxy = 627E0CC625B8DD0900A8449C /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 627E0CB825B8DD0800A8449C /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 627E0CB925B8DD0800A8449C /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 627E0CD025B8DD0900A8449C /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 11.1; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 627E0CD125B8DD0900A8449C /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 11.1; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Release; + }; + 627E0CD325B8DD0900A8449C /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_ENTITLEMENTS = "PullApprove Extension/PullApprove_Extension.entitlements"; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = XU33B862HJ; + INFOPLIST_FILE = "PullApprove Extension/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + "@executable_path/../../../../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 10.14; + PRODUCT_BUNDLE_IDENTIFIER = com.dropseed.PullApprove.Extension; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + 627E0CD425B8DD0900A8449C /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_ENTITLEMENTS = "PullApprove Extension/PullApprove_Extension.entitlements"; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = XU33B862HJ; + INFOPLIST_FILE = "PullApprove Extension/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + "@executable_path/../../../../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 10.14; + PRODUCT_BUNDLE_IDENTIFIER = com.dropseed.PullApprove.Extension; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; + 627E0CD725B8DD0900A8449C /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_ENTITLEMENTS = PullApprove/PullApprove.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + DEVELOPMENT_TEAM = XU33B862HJ; + INFOPLIST_FILE = PullApprove/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 10.14; + MARKETING_VERSION = 0.1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.dropseed.PullApprove; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + 627E0CD825B8DD0900A8449C /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_ENTITLEMENTS = PullApprove/PullApprove.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + DEVELOPMENT_TEAM = XU33B862HJ; + INFOPLIST_FILE = PullApprove/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 10.14; + MARKETING_VERSION = 0.1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.dropseed.PullApprove; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 627E0CAD25B8DD0800A8449C /* Build configuration list for PBXProject "PullApprove" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 627E0CD025B8DD0900A8449C /* Debug */, + 627E0CD125B8DD0900A8449C /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 627E0CD225B8DD0900A8449C /* Build configuration list for PBXNativeTarget "PullApprove Extension" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 627E0CD325B8DD0900A8449C /* Debug */, + 627E0CD425B8DD0900A8449C /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 627E0CD625B8DD0900A8449C /* Build configuration list for PBXNativeTarget "PullApprove" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 627E0CD725B8DD0900A8449C /* Debug */, + 627E0CD825B8DD0900A8449C /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 627E0CAA25B8DD0800A8449C /* Project object */; +} diff --git a/PullApprove/PullApprove.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/PullApprove/PullApprove.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/PullApprove/PullApprove.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/PullApprove/PullApprove.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/PullApprove/PullApprove.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/PullApprove/PullApprove.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/PullApprove/PullApprove.xcodeproj/project.xcworkspace/xcuserdata/davegaeddert.xcuserdatad/UserInterfaceState.xcuserstate b/PullApprove/PullApprove.xcodeproj/project.xcworkspace/xcuserdata/davegaeddert.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..2a84df3eb0d67e19e1bbeef2844c461dbf4be9dc GIT binary patch literal 28793 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 jC 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 literal 0 HcmV?d00001 diff --git a/PullApprove/PullApprove.xcodeproj/xcuserdata/davegaeddert.xcuserdatad/xcschemes/xcschememanagement.plist b/PullApprove/PullApprove.xcodeproj/xcuserdata/davegaeddert.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..d590f9c --- /dev/null +++ b/PullApprove/PullApprove.xcodeproj/xcuserdata/davegaeddert.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + PullApprove.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/PullApprove/PullApprove/AppDelegate.swift b/PullApprove/PullApprove/AppDelegate.swift new file mode 100644 index 0000000..4f0f839 --- /dev/null +++ b/PullApprove/PullApprove/AppDelegate.swift @@ -0,0 +1,25 @@ +// +// AppDelegate.swift +// PullApprove +// +// Created by Dave Gaeddert on 1/20/21. +// + +import Cocoa + +@main +class AppDelegate: NSObject, NSApplicationDelegate { + + func applicationDidFinishLaunching(_ notification: Notification) { + // Insert code here to initialize your application + } + + func applicationWillTerminate(_ notification: Notification) { + // Insert code here to tear down your application + } + + func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { + return true + } + +} diff --git a/PullApprove/PullApprove/Assets.xcassets/AccentColor.colorset/Contents.json b/PullApprove/PullApprove/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/PullApprove/PullApprove/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/PullApprove/PullApprove/Assets.xcassets/AppIcon.appiconset/Contents.json b/PullApprove/PullApprove/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..c323378 --- /dev/null +++ b/PullApprove/PullApprove/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,60 @@ +{ + "images" : [ + { + "size" : "16x16", + "idiom" : "mac", + "filename" : "icon-16.png", + "scale" : "1x" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "16x16" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "32x32" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "32x32" + }, + { + "size" : "128x128", + "idiom" : "mac", + "filename" : "icon-128.png", + "scale" : "1x" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "128x128" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "256x256" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "256x256" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "512x512" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "512x512" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/PullApprove/PullApprove/Assets.xcassets/AppIcon.appiconset/icon-128.png b/PullApprove/PullApprove/Assets.xcassets/AppIcon.appiconset/icon-128.png new file mode 100644 index 0000000000000000000000000000000000000000..ed0ab872ecc15ff93e555c84f3bc65c7667dba85 GIT binary patch literal 1756 zcmb7FiBppY7XQ942O&2^FId&j(a^WMCf_r7C>1>(>a zXaE3k^dK5buLYlhLh5;t57vOKMGJLkR)sz74lv0q3AKYFSVV zytEM17`>6-OP^=jn?)`K7B(_hO?;v`Cf3{JDz zfn$TEUWsGc87q?iX2r=YpX&Kmd-_#xuHQA@K;fs#JYB-oa9h!1kr!ve4*P(AX5iDb z&z2LGPpokp+Ec0Je5g!!p{^9|vbE3+-iPibsl}y z^V2!^I{8O0dGOqZ`W+!()Uy#Qcr{UaolMFy%r%i#+1lQ@1&sV9d4D>Hk;mgzH8(r| z($iCU^QL89US5iiK|nx2!uj(Zna3E6(O0h|y5g?~@*hu3R9abEk1Q;lol~2W$>R6# z^J0!4FK=&m*Mf*9bICO7qe^vb1Tu<>j<&RmD1x4&o^Fnfh5pjtZ%W?h>N=uOoS0{Y z??f|6D02MVvpr1&JRTn$B0EjR6{5)v2V>Z5zOz+qJcei{)`U;qQgk&03TFH&)W0qO zV$JbBh+Nc8sf+)MzS&>=GbO@S=I`APG?4XvPMP@PA8-E%WLbQSP z^$V|4QEekZ*66;wRj_;1y4(~;s?Go48h4@iCHlYH?+)y+A;vUvo5s1{&o?55?;uVE zSU6DuIW{SB+4U&flS#<_L#quh^#`GH&%M!SUr})R#%lfc;IlhZ57iYJ0u#Vk`S7p3XMy$ ztl7HG=~9`7n~|Tt{QOgw#+Z5W_`uNpjxXn6VQ3dRc5a^4 z-rgRb!UGYGetPeF<b5asNnmA)!rj&NEAJvZXD#(B13L{^jrzzdtN6F>$+Z1I+J&mA zttOOW&>$Qm(6~?8!m<7I`}(x}ODv$6O@3x5)2uk`11!V`IJybChjO(3GG#7I~RqT<%vgLrh>^Tlx<4|MDo zcX>I(KGqZQso39M9>UBzZ*ekKOvOm0-DIdq=Gy#l!mdMxg6(B)i4y2F)%2F)hiAw*B0Q%7|T8n?2@c(8L00000 literal 0 HcmV?d00001 diff --git a/PullApprove/PullApprove/Assets.xcassets/AppIcon.appiconset/icon-16.png b/PullApprove/PullApprove/Assets.xcassets/AppIcon.appiconset/icon-16.png new file mode 100644 index 0000000000000000000000000000000000000000..0e4a7daf61cdadd22d6981a6301913e3576484c9 GIT binary patch literal 322 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP>``W z$lZxy-8q?;Kn_c~qpu?a!^VE@KZ&eB{&i0m$B+ufqmwrBHX8`I)(1qfHE3CHVBj`j z2(|jWbG@2EW5?W-}Ico{Z}}8#Zmj{?b4GOB|cuR$Y2X9b=x{-SFK P^df_&tDnm{r-UW|!KZw{ literal 0 HcmV?d00001 diff --git a/PullApprove/PullApprove/Assets.xcassets/Contents.json b/PullApprove/PullApprove/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/PullApprove/PullApprove/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/PullApprove/PullApprove/Base.lproj/Main.storyboard b/PullApprove/PullApprove/Base.lproj/Main.storyboard new file mode 100644 index 0000000..e1523a7 --- /dev/null +++ b/PullApprove/PullApprove/Base.lproj/Main.storyboard @@ -0,0 +1,167 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PullApprove/PullApprove/Info.plist b/PullApprove/PullApprove/Info.plist new file mode 100644 index 0000000..0aefbf0 --- /dev/null +++ b/PullApprove/PullApprove/Info.plist @@ -0,0 +1,32 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIconFile + + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + $(MARKETING_VERSION) + CFBundleVersion + 1 + LSApplicationCategoryType + public.app-category.developer-tools + LSMinimumSystemVersion + $(MACOSX_DEPLOYMENT_TARGET) + NSMainStoryboardFile + Main + NSPrincipalClass + NSApplication + + diff --git a/PullApprove/PullApprove/PullApprove.entitlements b/PullApprove/PullApprove/PullApprove.entitlements new file mode 100644 index 0000000..f2ef3ae --- /dev/null +++ b/PullApprove/PullApprove/PullApprove.entitlements @@ -0,0 +1,10 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.files.user-selected.read-only + + + diff --git a/PullApprove/PullApprove/ViewController.swift b/PullApprove/PullApprove/ViewController.swift new file mode 100644 index 0000000..d53cc0a --- /dev/null +++ b/PullApprove/PullApprove/ViewController.swift @@ -0,0 +1,51 @@ +// +// ViewController.swift +// PullApprove +// +// Created by Dave Gaeddert on 1/20/21. +// + +import Cocoa +import SafariServices.SFSafariApplication +import SafariServices.SFSafariExtensionManager + +let appName = "PullApprove" +let extensionBundleIdentifier = "com.dropseed.PullApprove.Extension" + +class ViewController: NSViewController { + + @IBOutlet var appNameLabel: NSTextField! + + override func viewDidLoad() { + super.viewDidLoad() + self.appNameLabel.stringValue = appName + SFSafariExtensionManager.getStateOfSafariExtension(withIdentifier: extensionBundleIdentifier) { (state, error) in + guard let state = state, error == nil else { + // Insert code to inform the user that something went wrong. + return + } + + DispatchQueue.main.async { + if (state.isEnabled) { + self.appNameLabel.stringValue = "\(appName)'s extension is currently on." + } else { + self.appNameLabel.stringValue = "\(appName)'s extension is currently off. You can turn it on in Safari Extensions preferences." + } + } + } + } + + @IBAction func openSafariExtensionPreferences(_ sender: AnyObject?) { + SFSafariApplication.showPreferencesForExtension(withIdentifier: extensionBundleIdentifier) { error in + guard error == nil else { + // Insert code to inform the user that something went wrong. + return + } + + DispatchQueue.main.async { + NSApplication.shared.terminate(nil) + } + } + } + +} From 2167de1b4eb9a45d9b4820d262a8724ce2c6f074 Mon Sep 17 00:00:00 2001 From: Dave Gaeddert Date: Wed, 20 Jan 2021 16:55:26 -0600 Subject: [PATCH 2/2] Add .gitignore and rename directory --- .../UserInterfaceState.xcuserstate | Bin 28793 -> 0 bytes .../xcschemes/xcschememanagement.plist | 14 ----- safari/.gitignore | 49 ++++++++++++++++++ .../PullApprove Extension/Info.plist | 0 .../PullApprove_Extension.entitlements | 0 .../SafariWebExtensionHandler.swift | 0 .../PullApprove.xcodeproj/project.pbxproj | 0 .../contents.xcworkspacedata | 0 .../xcshareddata/IDEWorkspaceChecks.plist | 0 .../PullApprove/AppDelegate.swift | 0 .../AccentColor.colorset/Contents.json | 0 .../AppIcon.appiconset/Contents.json | 0 .../AppIcon.appiconset/icon-128.png | Bin .../AppIcon.appiconset/icon-16.png | Bin .../PullApprove/Assets.xcassets/Contents.json | 0 .../PullApprove/Base.lproj/Main.storyboard | 0 .../PullApprove/Info.plist | 0 .../PullApprove/PullApprove.entitlements | 0 .../PullApprove/ViewController.swift | 0 19 files changed, 49 insertions(+), 14 deletions(-) delete mode 100644 PullApprove/PullApprove.xcodeproj/project.xcworkspace/xcuserdata/davegaeddert.xcuserdatad/UserInterfaceState.xcuserstate delete mode 100644 PullApprove/PullApprove.xcodeproj/xcuserdata/davegaeddert.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 safari/.gitignore rename {PullApprove => safari}/PullApprove Extension/Info.plist (100%) rename {PullApprove => safari}/PullApprove Extension/PullApprove_Extension.entitlements (100%) rename {PullApprove => safari}/PullApprove Extension/SafariWebExtensionHandler.swift (100%) rename {PullApprove => safari}/PullApprove.xcodeproj/project.pbxproj (100%) rename {PullApprove => safari}/PullApprove.xcodeproj/project.xcworkspace/contents.xcworkspacedata (100%) rename {PullApprove => safari}/PullApprove.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist (100%) rename {PullApprove => safari}/PullApprove/AppDelegate.swift (100%) rename {PullApprove => safari}/PullApprove/Assets.xcassets/AccentColor.colorset/Contents.json (100%) rename {PullApprove => safari}/PullApprove/Assets.xcassets/AppIcon.appiconset/Contents.json (100%) rename {PullApprove => safari}/PullApprove/Assets.xcassets/AppIcon.appiconset/icon-128.png (100%) rename {PullApprove => safari}/PullApprove/Assets.xcassets/AppIcon.appiconset/icon-16.png (100%) rename {PullApprove => safari}/PullApprove/Assets.xcassets/Contents.json (100%) rename {PullApprove => safari}/PullApprove/Base.lproj/Main.storyboard (100%) rename {PullApprove => safari}/PullApprove/Info.plist (100%) rename {PullApprove => safari}/PullApprove/PullApprove.entitlements (100%) rename {PullApprove => safari}/PullApprove/ViewController.swift (100%) diff --git a/PullApprove/PullApprove.xcodeproj/project.xcworkspace/xcuserdata/davegaeddert.xcuserdatad/UserInterfaceState.xcuserstate b/PullApprove/PullApprove.xcodeproj/project.xcworkspace/xcuserdata/davegaeddert.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index 2a84df3eb0d67e19e1bbeef2844c461dbf4be9dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28793 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 jC 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 diff --git a/PullApprove/PullApprove.xcodeproj/xcuserdata/davegaeddert.xcuserdatad/xcschemes/xcschememanagement.plist b/PullApprove/PullApprove.xcodeproj/xcuserdata/davegaeddert.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index d590f9c..0000000 --- a/PullApprove/PullApprove.xcodeproj/xcuserdata/davegaeddert.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,14 +0,0 @@ - - - - - SchemeUserState - - PullApprove.xcscheme_^#shared#^_ - - orderHint - 0 - - - - diff --git a/safari/.gitignore b/safari/.gitignore new file mode 100644 index 0000000..e0897a1 --- /dev/null +++ b/safari/.gitignore @@ -0,0 +1,49 @@ +# Xcode +# +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + +## User settings +xcuserdata/ + +## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9) +*.xcscmblueprint +*.xccheckout + +## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4) +build/ +DerivedData/ +*.moved-aside +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 + +## Obj-C/Swift specific +*.hmap + +## App packaging +*.ipa +*.dSYM.zip +*.dSYM + +## Playgrounds +timeline.xctimeline +playground.xcworkspace + +# Swift Package Manager +# +# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. +# Packages/ +# Package.pins +# Package.resolved +# *.xcodeproj +# +# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata +# hence it is not needed unless you have added a package configuration file to your project +# .swiftpm + +.build/ diff --git a/PullApprove/PullApprove Extension/Info.plist b/safari/PullApprove Extension/Info.plist similarity index 100% rename from PullApprove/PullApprove Extension/Info.plist rename to safari/PullApprove Extension/Info.plist diff --git a/PullApprove/PullApprove Extension/PullApprove_Extension.entitlements b/safari/PullApprove Extension/PullApprove_Extension.entitlements similarity index 100% rename from PullApprove/PullApprove Extension/PullApprove_Extension.entitlements rename to safari/PullApprove Extension/PullApprove_Extension.entitlements diff --git a/PullApprove/PullApprove Extension/SafariWebExtensionHandler.swift b/safari/PullApprove Extension/SafariWebExtensionHandler.swift similarity index 100% rename from PullApprove/PullApprove Extension/SafariWebExtensionHandler.swift rename to safari/PullApprove Extension/SafariWebExtensionHandler.swift diff --git a/PullApprove/PullApprove.xcodeproj/project.pbxproj b/safari/PullApprove.xcodeproj/project.pbxproj similarity index 100% rename from PullApprove/PullApprove.xcodeproj/project.pbxproj rename to safari/PullApprove.xcodeproj/project.pbxproj diff --git a/PullApprove/PullApprove.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/safari/PullApprove.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 100% rename from PullApprove/PullApprove.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to safari/PullApprove.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/PullApprove/PullApprove.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/safari/PullApprove.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from PullApprove/PullApprove.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to safari/PullApprove.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/PullApprove/PullApprove/AppDelegate.swift b/safari/PullApprove/AppDelegate.swift similarity index 100% rename from PullApprove/PullApprove/AppDelegate.swift rename to safari/PullApprove/AppDelegate.swift diff --git a/PullApprove/PullApprove/Assets.xcassets/AccentColor.colorset/Contents.json b/safari/PullApprove/Assets.xcassets/AccentColor.colorset/Contents.json similarity index 100% rename from PullApprove/PullApprove/Assets.xcassets/AccentColor.colorset/Contents.json rename to safari/PullApprove/Assets.xcassets/AccentColor.colorset/Contents.json diff --git a/PullApprove/PullApprove/Assets.xcassets/AppIcon.appiconset/Contents.json b/safari/PullApprove/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from PullApprove/PullApprove/Assets.xcassets/AppIcon.appiconset/Contents.json rename to safari/PullApprove/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/PullApprove/PullApprove/Assets.xcassets/AppIcon.appiconset/icon-128.png b/safari/PullApprove/Assets.xcassets/AppIcon.appiconset/icon-128.png similarity index 100% rename from PullApprove/PullApprove/Assets.xcassets/AppIcon.appiconset/icon-128.png rename to safari/PullApprove/Assets.xcassets/AppIcon.appiconset/icon-128.png diff --git a/PullApprove/PullApprove/Assets.xcassets/AppIcon.appiconset/icon-16.png b/safari/PullApprove/Assets.xcassets/AppIcon.appiconset/icon-16.png similarity index 100% rename from PullApprove/PullApprove/Assets.xcassets/AppIcon.appiconset/icon-16.png rename to safari/PullApprove/Assets.xcassets/AppIcon.appiconset/icon-16.png diff --git a/PullApprove/PullApprove/Assets.xcassets/Contents.json b/safari/PullApprove/Assets.xcassets/Contents.json similarity index 100% rename from PullApprove/PullApprove/Assets.xcassets/Contents.json rename to safari/PullApprove/Assets.xcassets/Contents.json diff --git a/PullApprove/PullApprove/Base.lproj/Main.storyboard b/safari/PullApprove/Base.lproj/Main.storyboard similarity index 100% rename from PullApprove/PullApprove/Base.lproj/Main.storyboard rename to safari/PullApprove/Base.lproj/Main.storyboard diff --git a/PullApprove/PullApprove/Info.plist b/safari/PullApprove/Info.plist similarity index 100% rename from PullApprove/PullApprove/Info.plist rename to safari/PullApprove/Info.plist diff --git a/PullApprove/PullApprove/PullApprove.entitlements b/safari/PullApprove/PullApprove.entitlements similarity index 100% rename from PullApprove/PullApprove/PullApprove.entitlements rename to safari/PullApprove/PullApprove.entitlements diff --git a/PullApprove/PullApprove/ViewController.swift b/safari/PullApprove/ViewController.swift similarity index 100% rename from PullApprove/PullApprove/ViewController.swift rename to safari/PullApprove/ViewController.swift