Stub out Share Extension

This commit is contained in:
Maurice Parker 2020-08-13 18:03:39 -05:00
parent 58f6a3e179
commit 54275225a7
16 changed files with 426 additions and 7 deletions

View File

@ -40,6 +40,9 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserInterfaceValidations,
var imageDownloader: ImageDownloader!
var authorAvatarDownloader: AuthorAvatarDownloader!
var webFeedIconDownloader: WebFeedIconDownloader!
var extensionContainersFile: ExtensionContainersFile!
var extensionFeedAddRequestFile: ExtensionFeedAddRequestFile!
var appName: String!
var refreshTimer: AccountRefreshTimer?
@ -231,6 +234,9 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserInterfaceValidations,
self.toggleInspectorWindow(self)
}
extensionContainersFile = ExtensionContainersFile()
extensionFeedAddRequestFile = ExtensionFeedAddRequestFile()
refreshTimer = AccountRefreshTimer()
syncTimer = ArticleStatusSyncTimer()

View File

@ -67,6 +67,10 @@
<string>NetNewsWire (RSS Reader; https://ranchero.com/netnewswire/)</string>
<key>OrganizationIdentifier</key>
<string>$(ORGANIZATION_IDENTIFIER)</string>
<key>AppGroup</key>
<string>group.$(ORGANIZATION_IDENTIFIER).NetNewsWire</string>
<key>AppIdentifierPrefix</key>
<string>$(AppIdentifierPrefix)</string>
<key>DeveloperEntitlements</key>
<string>$(DEVELOPER_ENTITLEMENTS)</string>
</dict>

View File

@ -14,5 +14,9 @@
<array>
<string>com.red-sweater.marsedit4</string>
</array>
<key>com.apple.security.application-groups</key>
<array>
<string>group.$(ORGANIZATION_IDENTIFIER).NetNewsWire</string>
</array>
</dict>
</plist>

View File

@ -14,6 +14,10 @@
</array>
<key>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.application-groups</key>
<array>
<string>group.$(ORGANIZATION_IDENTIFIER).NetNewsWire</string>
</array>
<key>com.apple.security.automation.apple-events</key>
<true/>
<key>com.apple.security.files.user-selected.read-write</key>

View File

@ -0,0 +1,78 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="13150" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="13150"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="ShareViewController" customModuleProvider="target">
<connections>
<outlet property="view" destination="1" id="2"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<customView translatesAutoresizingMaskIntoConstraints="NO" id="1">
<rect key="frame" x="0.0" y="0.0" width="388" height="202"/>
<subviews>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1uM-r7-H1c">
<rect key="frame" x="302" y="3" width="82" height="32"/>
<buttonCell key="cell" type="push" title="Send" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="2l4-PO-we5">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
<string key="keyEquivalent">D</string>
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
</buttonCell>
<connections>
<action selector="send:" target="-2" id="yic-EC-GGk"/>
</connections>
</button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="NVE-vN-dkz">
<rect key="frame" x="224" y="3" width="82" height="32"/>
<constraints>
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="60" id="cP1-hK-9ZX"/>
</constraints>
<buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="6Up-t3-mwm">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
<string key="keyEquivalent" base64-UTF8="YES">
Gw
</string>
</buttonCell>
<connections>
<action selector="cancel:" target="-2" id="Qav-AK-DGt"/>
</connections>
</button>
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="aNc-0i-CWK">
<rect key="frame" x="140" y="170" width="108" height="17"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="left" title="My Service Title" id="0xp-rC-2gr">
<font key="font" metaFont="systemBold"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="4M6-D5-WIf">
<rect key="frame" x="110" y="170" width="22" height="22"/>
<constraints>
<constraint firstAttribute="width" constant="22" id="BOe-aZ-Njc"/>
<constraint firstAttribute="height" constant="22" id="zLg-1a-wlZ"/>
</constraints>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" id="q3u-Am-ZIA"/>
</imageView>
</subviews>
<constraints>
<constraint firstItem="1uM-r7-H1c" firstAttribute="leading" secondItem="NVE-vN-dkz" secondAttribute="trailing" constant="8" id="1UO-J1-LbJ"/>
<constraint firstItem="NVE-vN-dkz" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="1" secondAttribute="leading" constant="20" symbolic="YES" id="3N9-qo-UfS"/>
<constraint firstAttribute="bottom" secondItem="1uM-r7-H1c" secondAttribute="bottom" constant="10" id="4wH-De-nMF"/>
<constraint firstAttribute="bottom" secondItem="NVE-vN-dkz" secondAttribute="bottom" constant="10" id="USG-Gg-of3"/>
<constraint firstItem="1uM-r7-H1c" firstAttribute="leading" secondItem="NVE-vN-dkz" secondAttribute="trailing" constant="8" id="a8N-vS-Ew9"/>
<constraint firstItem="aNc-0i-CWK" firstAttribute="centerY" secondItem="4M6-D5-WIf" secondAttribute="centerY" constant="2.5" id="ilP-G0-GVG"/>
<constraint firstItem="NVE-vN-dkz" firstAttribute="width" secondItem="1uM-r7-H1c" secondAttribute="width" id="qPo-ky-Fcw"/>
<constraint firstAttribute="trailing" secondItem="1uM-r7-H1c" secondAttribute="trailing" constant="10" id="qfT-cw-QQ2"/>
<constraint firstAttribute="centerX" secondItem="aNc-0i-CWK" secondAttribute="centerX" id="uV3-Wn-RA3"/>
<constraint firstItem="aNc-0i-CWK" firstAttribute="leading" secondItem="4M6-D5-WIf" secondAttribute="trailing" constant="10" id="vFR-5i-Dvo"/>
<constraint firstItem="aNc-0i-CWK" firstAttribute="top" secondItem="1" secondAttribute="top" constant="15" id="vpR-tf-ebx"/>
</constraints>
</customView>
</objects>
</document>

View File

@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>OrganizationIdentifier</key>
<string>$(ORGANIZATION_IDENTIFIER)</string>
<key>AppGroup</key>
<string>group.$(ORGANIZATION_IDENTIFIER).NetNewsWire</string>
<key>AppIdentifierPrefix</key>
<string>$(AppIdentifierPrefix)</string>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleDisplayName</key>
<string>Share Extension</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIconFile</key>
<string>icon</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
<key>CFBundleShortVersionString</key>
<string>$(MARKETING_VERSION)</string>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
<key>LSMinimumSystemVersion</key>
<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
<key>NSExtension</key>
<dict>
<key>NSExtensionAttributes</key>
<dict>
<key>NSExtensionActivationRule</key>
<string>TRUEPREDICATE</string>
</dict>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.share-services</string>
<key>NSExtensionPrincipalClass</key>
<string>$(PRODUCT_MODULE_NAME).ShareViewController</string>
</dict>
<key>NSHumanReadableCopyright</key>
<string>Copyright © 2020 Ranchero Software. All rights reserved.</string>
</dict>
</plist>

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<!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.application-groups</key>
<array>
<string>group.$(ORGANIZATION_IDENTIFIER).NetNewsWire-Evergreen</string>
</array>
</dict>
</plist>

View File

@ -0,0 +1,65 @@
//
// ShareViewController.swift
// ShareExtension
//
// Created by Maurice Parker on 8/13/20.
// Copyright © 2020 Ranchero Software. All rights reserved.
//
import Cocoa
class ShareViewController: NSViewController {
private var url: URL?
private var extensionContainers: ExtensionContainers?
private var flattenedContainers: [ExtensionContainer]!
private var selectedContainer: ExtensionContainer?
override var nibName: NSNib.Name? {
return NSNib.Name("ShareViewController")
}
override func loadView() {
super.loadView()
extensionContainers = ExtensionContainersFile.read()
flattenedContainers = extensionContainers?.flattened ?? [ExtensionContainer]()
if let extensionContainers = extensionContainers {
selectedContainer = ShareDefaultContainer.defaultContainer(containers: extensionContainers)
}
var provider: NSItemProvider? = nil
// Try to get the URL if it is passed in
for item in self.extensionContext!.inputItems as! [NSExtensionItem] {
for itemProvider in item.attachments! {
if itemProvider.hasItemConformingToTypeIdentifier(kUTTypeURL as String) {
provider = itemProvider
}
}
}
if provider != nil {
provider!.loadItem(forTypeIdentifier: kUTTypeURL as String, options: nil, completionHandler: { [weak self] (urlCoded, error) in
if error != nil {
return
}
guard let url = urlCoded as? URL else {
return
}
self?.url = url
})
}
}
@IBAction func send(_ sender: AnyObject?) {
self.extensionContext!.completeRequest(returningItems: [], completionHandler: nil)
}
@IBAction func cancel(_ sender: AnyObject?) {
let cancelError = NSError(domain: NSCocoaErrorDomain, code: NSUserCancelledError, userInfo: nil)
self.extensionContext!.cancelRequest(withError: cancelError)
}
}

Binary file not shown.

View File

@ -73,6 +73,22 @@
5108F6D22375EED2001ABC45 /* TimelineCustomizerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5108F6D12375EED2001ABC45 /* TimelineCustomizerViewController.swift */; };
5108F6D42375EEEF001ABC45 /* TimelinePreviewTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5108F6D32375EEEF001ABC45 /* TimelinePreviewTableViewController.swift */; };
5108F6D823763094001ABC45 /* TickMarkSlider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5108F6D723763094001ABC45 /* TickMarkSlider.swift */; };
510C415F24E5CDE3008226FD /* icon.icns in Resources */ = {isa = PBXBuildFile; fileRef = 510C415E24E5CDE3008226FD /* icon.icns */; };
510C416124E5CDE3008226FD /* ShareViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 510C416024E5CDE3008226FD /* ShareViewController.swift */; };
510C416424E5CDE3008226FD /* ShareViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 510C416224E5CDE3008226FD /* ShareViewController.xib */; };
510C416924E5CDE3008226FD /* NetNewsWire Share Extension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 510C415C24E5CDE3008226FD /* NetNewsWire Share Extension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
510C417B24E5D1AE008226FD /* ExtensionContainersFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51B5C87C23F2346200032075 /* ExtensionContainersFile.swift */; };
510C417C24E5D1AE008226FD /* ExtensionFeedAddRequestFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51B5C8BF23F3866C00032075 /* ExtensionFeedAddRequestFile.swift */; };
510C417D24E5D1AE008226FD /* ExtensionContainers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51B5C87623F22B8200032075 /* ExtensionContainers.swift */; };
510C417E24E5D1AE008226FD /* ExtensionFeedAddRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51B5C87A23F2317700032075 /* ExtensionFeedAddRequest.swift */; };
510C417F24E5D1AE008226FD /* ExtensionContainersFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51B5C87C23F2346200032075 /* ExtensionContainersFile.swift */; };
510C418024E5D1AE008226FD /* ExtensionFeedAddRequestFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51B5C8BF23F3866C00032075 /* ExtensionFeedAddRequestFile.swift */; };
510C418124E5D1AE008226FD /* ExtensionContainers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51B5C87623F22B8200032075 /* ExtensionContainers.swift */; };
510C418224E5D1AE008226FD /* ExtensionFeedAddRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51B5C87A23F2317700032075 /* ExtensionFeedAddRequest.swift */; };
510C418324E5D1B4008226FD /* ExtensionContainersFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51B5C87C23F2346200032075 /* ExtensionContainersFile.swift */; };
510C418424E5D1B4008226FD /* ExtensionFeedAddRequestFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51B5C8BF23F3866C00032075 /* ExtensionFeedAddRequestFile.swift */; };
510C418524E5D1B4008226FD /* ExtensionContainers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51B5C87623F22B8200032075 /* ExtensionContainers.swift */; };
510C418624E5D1B4008226FD /* ExtensionFeedAddRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51B5C87A23F2317700032075 /* ExtensionFeedAddRequest.swift */; };
510C43ED243C0973009F70C3 /* ExtensionPointAdd.xib in Resources */ = {isa = PBXBuildFile; fileRef = 510C43EC243C0973009F70C3 /* ExtensionPointAdd.xib */; };
510C43EE243C0973009F70C3 /* ExtensionPointAdd.xib in Resources */ = {isa = PBXBuildFile; fileRef = 510C43EC243C0973009F70C3 /* ExtensionPointAdd.xib */; };
510C43F0243C0A80009F70C3 /* ExtensionPointAddViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 510C43EF243C0A80009F70C3 /* ExtensionPointAddViewController.swift */; };
@ -88,6 +104,10 @@
51126DA4225FDE2F00722696 /* RSImage-Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51126DA3225FDE2F00722696 /* RSImage-Extensions.swift */; };
5117715524E1EA0F00A2A836 /* ArticleExtractorButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5117715424E1EA0F00A2A836 /* ArticleExtractorButton.swift */; };
5117715624E1EA0F00A2A836 /* ArticleExtractorButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5117715424E1EA0F00A2A836 /* ArticleExtractorButton.swift */; };
511B148924E5DBDD00C919BD /* Account in Frameworks */ = {isa = PBXBuildFile; productRef = 511B148824E5DBDD00C919BD /* Account */; };
511B149824E5DC2300C919BD /* ShareDefaultContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51B5C8BC23F3780900032075 /* ShareDefaultContainer.swift */; };
511B149924E5DC3D00C919BD /* AppDefaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84E46C7C1F75EF7B005ECFB3 /* AppDefaults.swift */; };
511B149A24E5DC5400C919BD /* RefreshInterval.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5183CCE4226F4DFA0010922C /* RefreshInterval.swift */; };
511B9806237DCAC90028BCAA /* UserInfoKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 511B9805237DCAC90028BCAA /* UserInfoKey.swift */; };
511B9807237DCAC90028BCAA /* UserInfoKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 511B9805237DCAC90028BCAA /* UserInfoKey.swift */; };
511D43CF231FA62200FB1562 /* DetailKeyboardShortcuts.plist in Resources */ = {isa = PBXBuildFile; fileRef = 5127B237222B4849006D641D /* DetailKeyboardShortcuts.plist */; };
@ -1047,6 +1067,13 @@
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
510C416724E5CDE3008226FD /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 849C64581ED37A5D003D8FC0 /* Project object */;
proxyType = 1;
remoteGlobalIDString = 510C415B24E5CDE3008226FD;
remoteInfo = ShareExtension;
};
5131463C235A7BBE00387FDC /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 849C64581ED37A5D003D8FC0 /* Project object */;
@ -1329,6 +1356,7 @@
dstPath = "";
dstSubfolderSpec = 13;
files = (
510C416924E5CDE3008226FD /* NetNewsWire Share Extension.appex in Embed App Extensions */,
840958632201629A002C1579 /* Subscribe to Feed.appex in Embed App Extensions */,
);
name = "Embed App Extensions";
@ -1444,6 +1472,13 @@
5108F6D12375EED2001ABC45 /* TimelineCustomizerViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimelineCustomizerViewController.swift; sourceTree = "<group>"; };
5108F6D32375EEEF001ABC45 /* TimelinePreviewTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimelinePreviewTableViewController.swift; sourceTree = "<group>"; };
5108F6D723763094001ABC45 /* TickMarkSlider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TickMarkSlider.swift; sourceTree = "<group>"; };
510C415C24E5CDE3008226FD /* NetNewsWire Share Extension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = "NetNewsWire Share Extension.appex"; sourceTree = BUILT_PRODUCTS_DIR; };
510C415E24E5CDE3008226FD /* icon.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = icon.icns; sourceTree = "<group>"; };
510C416024E5CDE3008226FD /* ShareViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShareViewController.swift; sourceTree = "<group>"; };
510C416324E5CDE3008226FD /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/ShareViewController.xib; sourceTree = "<group>"; };
510C416524E5CDE3008226FD /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
510C416624E5CDE3008226FD /* ShareExtension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = ShareExtension.entitlements; sourceTree = "<group>"; };
510C418724E5D2E3008226FD /* NetNewsWire_shareextension_target.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = NetNewsWire_shareextension_target.xcconfig; sourceTree = "<group>"; };
510C43EC243C0973009F70C3 /* ExtensionPointAdd.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ExtensionPointAdd.xib; sourceTree = "<group>"; };
510C43EF243C0A80009F70C3 /* ExtensionPointAddViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExtensionPointAddViewController.swift; sourceTree = "<group>"; };
510C43F2243C11FE009F70C3 /* ExtensionPointAddTableCellView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExtensionPointAddTableCellView.swift; sourceTree = "<group>"; };
@ -1768,7 +1803,7 @@
65C2E40024B05D8A000AFDF6 /* FeedsSettingsModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedsSettingsModel.swift; sourceTree = "<group>"; };
65CBAD5924AE03C20006DD91 /* ColorPaletteContainerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ColorPaletteContainerView.swift; sourceTree = "<group>"; };
65ED4083235DEF6C0081F399 /* NetNewsWire.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = NetNewsWire.app; sourceTree = BUILT_PRODUCTS_DIR; };
65ED409D235DEF770081F399 /* Subscribe to Feed.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = "Subscribe to Feed.appex"; sourceTree = BUILT_PRODUCTS_DIR; };
65ED409D235DEF770081F399 /* Subscribe to Feed.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; name = "Subscribe to Feed.appex"; path = "Subscribe to Feed MAS.appex"; sourceTree = BUILT_PRODUCTS_DIR; };
65ED409F235DEFF00081F399 /* container-migration.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "container-migration.plist"; sourceTree = "<group>"; };
65ED40F2235DF5E00081F399 /* NetNewsWire_macapp_target_macappstore.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = NetNewsWire_macapp_target_macappstore.xcconfig; sourceTree = "<group>"; };
65ED4186235E045B0081F399 /* NetNewsWire_safariextension_target_macappstore.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = NetNewsWire_safariextension_target_macappstore.xcconfig; sourceTree = "<group>"; };
@ -1969,6 +2004,14 @@
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
510C415924E5CDE3008226FD /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
511B148924E5DBDD00C919BD /* Account in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
51314634235A7BBE00387FDC /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
@ -2222,6 +2265,18 @@
path = Twitter;
sourceTree = "<group>";
};
510C415D24E5CDE3008226FD /* ShareExtension */ = {
isa = PBXGroup;
children = (
510C415E24E5CDE3008226FD /* icon.icns */,
510C416024E5CDE3008226FD /* ShareViewController.swift */,
510C416224E5CDE3008226FD /* ShareViewController.xib */,
510C416524E5CDE3008226FD /* Info.plist */,
510C416624E5CDE3008226FD /* ShareExtension.entitlements */,
);
path = ShareExtension;
sourceTree = "<group>";
};
510C43F5243D0325009F70C3 /* ExtensionPoints */ = {
isa = PBXGroup;
children = (
@ -2322,7 +2377,6 @@
isa = PBXGroup;
children = (
513C5CE8232571C2003D4054 /* ShareViewController.swift */,
51B5C8BC23F3780900032075 /* ShareDefaultContainer.swift */,
51707438232AA97100A461A3 /* ShareFolderPickerController.swift */,
51A9A5E72380CA130033AADF /* ShareFolderPickerCell.swift */,
51A9A5E32380C8870033AADF /* ShareFolderPickerAccountCell.xib */,
@ -2542,15 +2596,16 @@
path = CombineExt;
sourceTree = "<group>";
};
51B5C85A23F22A7A00032075 /* CommonExtension */ = {
51B5C85A23F22A7A00032075 /* ShareExtension */ = {
isa = PBXGroup;
children = (
51B5C87623F22B8200032075 /* ExtensionContainers.swift */,
51B5C87C23F2346200032075 /* ExtensionContainersFile.swift */,
51B5C87A23F2317700032075 /* ExtensionFeedAddRequest.swift */,
51B5C8BF23F3866C00032075 /* ExtensionFeedAddRequestFile.swift */,
51B5C8BC23F3780900032075 /* ShareDefaultContainer.swift */,
);
path = CommonExtension;
path = ShareExtension;
sourceTree = "<group>";
};
51C0519224A77E3500194D5E /* Multiplatform */ = {
@ -3157,6 +3212,7 @@
65ED409D235DEF770081F399 /* Subscribe to Feed.appex */,
51C0513D24A77DF800194D5E /* NetNewsWire.app */,
51C0514424A77DF800194D5E /* NetNewsWire.app */,
510C415C24E5CDE3008226FD /* NetNewsWire Share Extension.appex */,
);
name = Products;
sourceTree = "<group>";
@ -3198,6 +3254,7 @@
848B937021C8C5540038DC0D /* CrashReporter */,
D5907D6F2004AB67005947E5 /* Scriptability */,
6581C73620CED60100F4AD34 /* SafariExtension */,
510C415D24E5CDE3008226FD /* ShareExtension */,
84C9FC8322629E8F00D921D6 /* Resources */,
84FB9A2C1EDCD6A4003D53B9 /* Frameworks */,
B24EFD482330FF99006C6242 /* NetNewsWire-Bridging-Header.h */,
@ -3222,6 +3279,7 @@
8444C9011FED81880051386C /* Exporters */,
51FE0FF9234552490056195D /* UserNotifications */,
84F2D5341FC22FCB00998D64 /* SmartFeeds */,
51B5C85A23F22A7A00032075 /* ShareExtension */,
848F6AE31FC29CFA002D422E /* Favicons */,
845213211FCA5B10003B6E93 /* Images */,
8426119C1FCB6ED40086A189 /* HTMLMetadata */,
@ -3340,7 +3398,6 @@
513145F9235A55A700387FDC /* Intents */,
5183CCEB227117C70010922C /* Settings */,
51C45245226506C800C03939 /* UIKit Extensions */,
51B5C85A23F22A7A00032075 /* CommonExtension */,
513C5CE7232571C2003D4054 /* ShareExtension */,
51314643235A7C2300387FDC /* IntentsExtension */,
84C9FC9A2262A1A900D921D6 /* Resources */,
@ -3473,6 +3530,7 @@
D5907CDE2002F0BE005947E5 /* NetNewsWire_project.xcconfig */,
65ED4186235E045B0081F399 /* NetNewsWire_safariextension_target_macappstore.xcconfig */,
D519E74722EE553300923F27 /* NetNewsWire_safariextension_target.xcconfig */,
510C418724E5D2E3008226FD /* NetNewsWire_shareextension_target.xcconfig */,
D5907CDF2002F0F9005947E5 /* NetNewsWireTests_target.xcconfig */,
);
path = xcconfig;
@ -3499,6 +3557,26 @@
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
510C415B24E5CDE3008226FD /* NetNewsWire Share Extension */ = {
isa = PBXNativeTarget;
buildConfigurationList = 510C417A24E5CDE3008226FD /* Build configuration list for PBXNativeTarget "NetNewsWire Share Extension" */;
buildPhases = (
510C415824E5CDE3008226FD /* Sources */,
510C415924E5CDE3008226FD /* Frameworks */,
510C415A24E5CDE3008226FD /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = "NetNewsWire Share Extension";
packageProductDependencies = (
511B148824E5DBDD00C919BD /* Account */,
);
productName = ShareExtension;
productReference = 510C415C24E5CDE3008226FD /* NetNewsWire Share Extension.appex */;
productType = "com.apple.product-type.app-extension";
};
51314636235A7BBE00387FDC /* NetNewsWire iOS Intents Extension */ = {
isa = PBXNativeTarget;
buildConfigurationList = 5131463F235A7BBE00387FDC /* Build configuration list for PBXNativeTarget "NetNewsWire iOS Intents Extension" */;
@ -3717,6 +3795,7 @@
65ED42D4235E72000081F399 /* PBXTargetDependency */,
65ED42D6235E72000081F399 /* PBXTargetDependency */,
65ED42D8235E72000081F399 /* PBXTargetDependency */,
510C416824E5CDE3008226FD /* PBXTargetDependency */,
);
name = NetNewsWire;
packageProductDependencies = (
@ -3762,6 +3841,9 @@
LastUpgradeCheck = 0930;
ORGANIZATIONNAME = "Ranchero Software";
TargetAttributes = {
510C415B24E5CDE3008226FD = {
CreatedOnToolsVersion = 12.0;
};
51314636235A7BBE00387FDC = {
CreatedOnToolsVersion = 11.2;
DevelopmentTeam = SHJK2V3AJG;
@ -3867,6 +3949,7 @@
518B2ED12351B3DD00400001 /* NetNewsWire-iOSTests */,
51C0513C24A77DF800194D5E /* Multiplatform iOS */,
51C0514324A77DF800194D5E /* Multiplatform macOS */,
510C415B24E5CDE3008226FD /* NetNewsWire Share Extension */,
);
};
/* End PBXProject section */
@ -3987,6 +4070,15 @@
/* End PBXReferenceProxy section */
/* Begin PBXResourcesBuildPhase section */
510C415A24E5CDE3008226FD /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
510C416424E5CDE3008226FD /* ShareViewController.xib in Resources */,
510C415F24E5CDE3008226FD /* icon.icns in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
51314635235A7BBE00387FDC /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
@ -4322,6 +4414,21 @@
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
510C415824E5CDE3008226FD /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
511B149924E5DC3D00C919BD /* AppDefaults.swift in Sources */,
510C416124E5CDE3008226FD /* ShareViewController.swift in Sources */,
510C418424E5D1B4008226FD /* ExtensionFeedAddRequestFile.swift in Sources */,
510C418624E5D1B4008226FD /* ExtensionFeedAddRequest.swift in Sources */,
511B149A24E5DC5400C919BD /* RefreshInterval.swift in Sources */,
510C418324E5D1B4008226FD /* ExtensionContainersFile.swift in Sources */,
510C418524E5D1B4008226FD /* ExtensionContainers.swift in Sources */,
511B149824E5DC2300C919BD /* ShareDefaultContainer.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
51314633235A7BBE00387FDC /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
@ -4727,6 +4834,8 @@
65ED3FDE235DEF6C0081F399 /* CrashReportWindowController.swift in Sources */,
65ED3FDF235DEF6C0081F399 /* WebFeedIconDownloader.swift in Sources */,
B24E9ADD245AB88400DA5718 /* NSAttributedString+NetNewsWire.swift in Sources */,
510C417C24E5D1AE008226FD /* ExtensionFeedAddRequestFile.swift in Sources */,
510C417D24E5D1AE008226FD /* ExtensionContainers.swift in Sources */,
65ED3FE0235DEF6C0081F399 /* PreferencesControlsBackgroundView.swift in Sources */,
65ED3FE1235DEF6C0081F399 /* MarkCommandValidationStatus.swift in Sources */,
65ED3FE2235DEF6C0081F399 /* ArticlePasteboardWriter.swift in Sources */,
@ -4786,6 +4895,7 @@
65ED4013235DEF6C0081F399 /* MainWIndowKeyboardHandler.swift in Sources */,
65ED4014235DEF6C0081F399 /* PasteboardWebFeed.swift in Sources */,
510C43F8243D035C009F70C3 /* ExtensionPoint.swift in Sources */,
510C417B24E5D1AE008226FD /* ExtensionContainersFile.swift in Sources */,
65ED4015235DEF6C0081F399 /* AccountsDetailViewController.swift in Sources */,
65ED4016235DEF6C0081F399 /* DetailViewController.swift in Sources */,
5117715624E1EA0F00A2A836 /* ArticleExtractorButton.swift in Sources */,
@ -4819,6 +4929,7 @@
65ED402E235DEF6C0081F399 /* MainWindowController+Scriptability.swift in Sources */,
65ED402F235DEF6C0081F399 /* PreferencesWindowController.swift in Sources */,
65ED4030235DEF6C0081F399 /* SmallIconProvider.swift in Sources */,
510C417E24E5D1AE008226FD /* ExtensionFeedAddRequest.swift in Sources */,
65ED4031235DEF6C0081F399 /* ArticleExtractor.swift in Sources */,
65ED4032235DEF6C0081F399 /* FetchRequestQueue.swift in Sources */,
65ED4033235DEF6C0081F399 /* SidebarKeyboardDelegate.swift in Sources */,
@ -5051,6 +5162,7 @@
84F2D53A1FC2308B00998D64 /* UnreadFeed.swift in Sources */,
513228FB233037630033D4ED /* Reachability.swift in Sources */,
845A29221FC9251E007B49E3 /* SidebarCellLayout.swift in Sources */,
510C418224E5D1AE008226FD /* ExtensionFeedAddRequest.swift in Sources */,
516AE9DF2372269A007DEEAA /* IconImage.swift in Sources */,
84AD1EBA2031649C00BC20B7 /* SmartFeedPasteboardWriter.swift in Sources */,
849C78922362AB04009A71E4 /* ExportOPMLWindowController.swift in Sources */,
@ -5076,6 +5188,7 @@
515A5177243E90200089E588 /* ExtensionPointIdentifer.swift in Sources */,
849A97651ED9EB96007D329B /* WebFeedTreeControllerDelegate.swift in Sources */,
849A97671ED9EB96007D329B /* UnreadCountView.swift in Sources */,
510C418024E5D1AE008226FD /* ExtensionFeedAddRequestFile.swift in Sources */,
51FE10092346739D0056195D /* ActivityType.swift in Sources */,
510C43F3243C11FE009F70C3 /* ExtensionPointAddTableCellView.swift in Sources */,
840BEE4121D70E64009BBAFA /* CrashReportWindowController.swift in Sources */,
@ -5148,6 +5261,7 @@
519D2F2524E1C03300AD7D8A /* SidebarTableRowView.swift in Sources */,
518C3193237B00D9004D740F /* DetailIconSchemeHandler.swift in Sources */,
84C9FC6722629B9000D921D6 /* AppDelegate.swift in Sources */,
510C417F24E5D1AE008226FD /* ExtensionContainersFile.swift in Sources */,
84C9FC7A22629E1200D921D6 /* PreferencesTableViewBackgroundView.swift in Sources */,
84CAFCAF22BC8C35007694F0 /* FetchRequestOperation.swift in Sources */,
8426119E1FCB6ED40086A189 /* HTMLMetadataDownloader.swift in Sources */,
@ -5182,6 +5296,7 @@
84CAFCA422BC8C08007694F0 /* FetchRequestQueue.swift in Sources */,
844B5B591FE9FE4F00C7C76A /* SidebarKeyboardDelegate.swift in Sources */,
84C9FC7C22629E1200D921D6 /* AccountsPreferencesViewController.swift in Sources */,
510C418124E5D1AE008226FD /* ExtensionContainers.swift in Sources */,
51EC114C2149FE3300B296E3 /* FolderTreeMenu.swift in Sources */,
849ADEE42359817E000E1B81 /* NNW3ImportController.swift in Sources */,
849A97A31ED9F180007D329B /* FolderTreeControllerDelegate.swift in Sources */,
@ -5229,6 +5344,11 @@
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
510C416824E5CDE3008226FD /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 510C415B24E5CDE3008226FD /* NetNewsWire Share Extension */;
targetProxy = 510C416724E5CDE3008226FD /* PBXContainerItemProxy */;
};
5131463D235A7BBE00387FDC /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 51314636235A7BBE00387FDC /* NetNewsWire iOS Intents Extension */;
@ -5287,6 +5407,14 @@
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
510C416224E5CDE3008226FD /* ShareViewController.xib */ = {
isa = PBXVariantGroup;
children = (
510C416324E5CDE3008226FD /* Base */,
);
name = ShareViewController.xib;
sourceTree = "<group>";
};
511D43ED231FBDE800FB1562 /* LaunchScreenPad.storyboard */ = {
isa = PBXVariantGroup;
children = (
@ -5403,6 +5531,20 @@
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
510C416A24E5CDE3008226FD /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 510C418724E5D2E3008226FD /* NetNewsWire_shareextension_target.xcconfig */;
buildSettings = {
};
name = Debug;
};
510C416B24E5CDE3008226FD /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 510C418724E5D2E3008226FD /* NetNewsWire_shareextension_target.xcconfig */;
buildSettings = {
};
name = Release;
};
51314640235A7BBE00387FDC /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 51314617235A797400387FDC /* NetNewsWire_iOSintentextension_target.xcconfig */;
@ -5509,7 +5651,6 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 65ED4186235E045B0081F399 /* NetNewsWire_safariextension_target_macappstore.xcconfig */;
buildSettings = {
PRODUCT_NAME = "Subscribe to Feed";
};
name = Debug;
};
@ -5517,7 +5658,6 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 65ED4186235E045B0081F399 /* NetNewsWire_safariextension_target_macappstore.xcconfig */;
buildSettings = {
PRODUCT_NAME = "Subscribe to Feed";
};
name = Release;
};
@ -5580,6 +5720,15 @@
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
510C417A24E5CDE3008226FD /* Build configuration list for PBXNativeTarget "NetNewsWire Share Extension" */ = {
isa = XCConfigurationList;
buildConfigurations = (
510C416A24E5CDE3008226FD /* Debug */,
510C416B24E5CDE3008226FD /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
5131463F235A7BBE00387FDC /* Build configuration list for PBXNativeTarget "NetNewsWire iOS Intents Extension" */ = {
isa = XCConfigurationList;
buildConfigurations = (
@ -5744,6 +5893,10 @@
package = 5102AE4324D17E820050839C /* XCRemoteSwiftPackageReference "RSCore" */;
productName = RSCoreResources;
};
511B148824E5DBDD00C919BD /* Account */ = {
isa = XCSwiftPackageProductDependency;
productName = Account;
};
5138E93924D33E5600AFF0FE /* RSTree */ = {
isa = XCSwiftPackageProductDependency;
package = 510ECA4024D1DCD0001C31A6 /* XCRemoteSwiftPackageReference "RSTree" */;

View File

@ -0,0 +1,43 @@
CODE_SIGN_IDENTITY = Developer ID Application
DEVELOPMENT_TEAM = M8L2WTLA8W
CODE_SIGN_STYLE = Manual
ORGANIZATION_IDENTIFIER = com.ranchero
PROVISIONING_PROFILE_SPECIFIER =
// developers can locally override the Xcode settings for code signing
// by creating a DeveloperSettings.xcconfig file locally at the appropriate path
// This allows a pristine project to have code signing set up with the appropriate
// developer ID and certificates, and for dev to be able to have local settings
// without needing to check in anything into source control
//
// As an example, make a ../../SharedXcodeSettings/DeveloperSettings.xcconfig file and
// give it the contents
//
// CODE_SIGN_IDENTITY[sdk=macosx*] = Mac Developer
// CODE_SIGN_IDENTITY[sdk=iphoneos*] = iPhone Developer
// CODE_SIGN_IDENTITY[sdk=iphonesimulator*] = iPhone Developer
// DEVELOPMENT_TEAM = <Your Team ID>
// ORGANIZATION_IDENTIFIER = <Your Domain Name Reversed>
// CODE_SIGN_STYLE = Automatic
// PROVISIONING_PROFILE_SPECIFIER =
//
// And you should be able to build without code signing errors and without modifying
// the NetNewsWire Xcode project.
//
// Example: if your NetNewsWire Xcode project file is at
// /Users/Shared/git/NetNewsWire/NetNewsWire.xcodeproj
// create your DeveloperSettings.xcconfig file at
// /Users/Shared/git/SharedXcodeSettings/DeveloperSettings.xcconfig
//
#include? "../../SharedXcodeSettings/DeveloperSettings.xcconfig"
#include "./common/NetNewsWire_mac_target_common.xcconfig"
CODE_SIGN_ENTITLEMENTS = Mac/ShareExtension/ShareExtension.entitlements
INFOPLIST_FILE = Mac/ShareExtension/Info.plist
LD_RUNPATH_SEARCH_PATHS = $(inherited) @executable_path/../Frameworks @executable_path/../../../../Frameworks
PRODUCT_BUNDLE_IDENTIFIER = $(ORGANIZATION_IDENTIFIER).NetNewsWire-Evergreen.ShareExtension
PRODUCT_NAME = $(TARGET_NAME)
SDKROOT = macosx