WIP: Begin implementing FollowActionExtension
This commit is contained in:
parent
7582fb5ab5
commit
09cec923bb
|
@ -0,0 +1,38 @@
|
|||
//
|
||||
// Action.js
|
||||
// FollowActionExtension
|
||||
//
|
||||
// Created by Marcus Kida on 03.01.23.
|
||||
//
|
||||
|
||||
var Action = function() {};
|
||||
|
||||
Action.prototype = {
|
||||
|
||||
run: function(arguments) {
|
||||
var username = document.documentURI.match("@(.+)@([a-z0-9]+\.[a-z0-9]+)")[0];
|
||||
|
||||
if (!username) {
|
||||
username = document.head.querySelector('[property="profile:username"]').content
|
||||
}
|
||||
|
||||
console.log("username" + username)
|
||||
|
||||
arguments.completionFunction({ "username" : username })
|
||||
},
|
||||
|
||||
finalize: function(arguments) {
|
||||
|
||||
var openURL = arguments["openURL"]
|
||||
var error = arguments["error"]
|
||||
|
||||
if (error) {
|
||||
alert(error)
|
||||
} else if (openURL) {
|
||||
window.location = openURL
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
var ExtensionPreprocessingJS = new Action
|
|
@ -0,0 +1,91 @@
|
|||
//
|
||||
// ActionRequestHandler.swift
|
||||
// FollowActionExtension
|
||||
//
|
||||
// Created by Marcus Kida on 03.01.23.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
import MobileCoreServices
|
||||
import UniformTypeIdentifiers
|
||||
|
||||
class ActionRequestHandler: NSObject, NSExtensionRequestHandling {
|
||||
|
||||
var extensionContext: NSExtensionContext?
|
||||
|
||||
func beginRequest(with context: NSExtensionContext) {
|
||||
// Do not call super in an Action extension with no user interface
|
||||
self.extensionContext = context
|
||||
|
||||
var found = false
|
||||
|
||||
// Find the item containing the results from the JavaScript preprocessing.
|
||||
outer:
|
||||
for item in context.inputItems as! [NSExtensionItem] {
|
||||
if let attachments = item.attachments {
|
||||
for itemProvider in attachments {
|
||||
if itemProvider.hasItemConformingToTypeIdentifier(UTType.propertyList.identifier) {
|
||||
itemProvider.loadItem(forTypeIdentifier: UTType.propertyList.identifier, options: nil, completionHandler: { (item, error) in
|
||||
guard
|
||||
let dictionary = item as? [String: Any],
|
||||
let res = dictionary[NSExtensionJavaScriptPreprocessingResultsKey] as? [String: Any]? ?? [:]
|
||||
else {
|
||||
|
||||
self.doneWithResults(
|
||||
["error": "Failed to find username. Are you sure this is a Mastodon Profile page?"]
|
||||
)
|
||||
return
|
||||
}
|
||||
|
||||
OperationQueue.main.addOperation {
|
||||
self.itemLoadCompletedWithPreprocessingResults(res)
|
||||
}
|
||||
})
|
||||
found = true
|
||||
break outer
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if !found {
|
||||
self.doneWithResults(nil)
|
||||
}
|
||||
}
|
||||
|
||||
func itemLoadCompletedWithPreprocessingResults(_ javaScriptPreprocessingResults: [String: Any]) {
|
||||
guard let username = javaScriptPreprocessingResults["username"] as? String else { return }
|
||||
|
||||
doneWithResults([
|
||||
"openURL": "mastodon://profile/\(username)"
|
||||
])
|
||||
}
|
||||
|
||||
func doneWithResults(_ resultsForJavaScriptFinalizeArg: [String: Any]?) {
|
||||
if let resultsForJavaScriptFinalize = resultsForJavaScriptFinalizeArg {
|
||||
// Construct an NSExtensionItem of the appropriate type to return our
|
||||
// results dictionary in.
|
||||
|
||||
// These will be used as the arguments to the JavaScript finalize()
|
||||
// method.
|
||||
|
||||
let resultsDictionary = [NSExtensionJavaScriptFinalizeArgumentKey: resultsForJavaScriptFinalize]
|
||||
|
||||
let resultsProvider = NSItemProvider(item: resultsDictionary as NSDictionary, typeIdentifier: UTType.propertyList.identifier)
|
||||
|
||||
let resultsItem = NSExtensionItem()
|
||||
resultsItem.attachments = [resultsProvider]
|
||||
|
||||
// Signal that we're complete, returning our results.
|
||||
self.extensionContext!.completeRequest(returningItems: [resultsItem], completionHandler: nil)
|
||||
} else {
|
||||
// We still need to signal that we're done even if we have nothing to
|
||||
// pass back.
|
||||
self.extensionContext!.completeRequest(returningItems: [], completionHandler: nil)
|
||||
}
|
||||
|
||||
// Don't hold on to this after we finished with it.
|
||||
self.extensionContext = nil
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,41 @@
|
|||
<?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>NSExtension</key>
|
||||
<dict>
|
||||
<key>NSExtensionAttributes</key>
|
||||
<dict>
|
||||
<key>NSExtensionActivationRule</key>
|
||||
<dict>
|
||||
<key>NSExtensionActivationSupportsFileWithMaxCount</key>
|
||||
<integer>0</integer>
|
||||
<key>NSExtensionActivationSupportsImageWithMaxCount</key>
|
||||
<integer>0</integer>
|
||||
<key>NSExtensionActivationSupportsMovieWithMaxCount</key>
|
||||
<integer>0</integer>
|
||||
<key>NSExtensionActivationSupportsText</key>
|
||||
<false/>
|
||||
<key>NSExtensionActivationSupportsWebURLWithMaxCount</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
<key>NSExtensionJavaScriptPreprocessingFile</key>
|
||||
<string>Action</string>
|
||||
<key>NSExtensionServiceAllowsFinderPreviewItem</key>
|
||||
<true/>
|
||||
<key>NSExtensionServiceAllowsTouchBarItem</key>
|
||||
<true/>
|
||||
<key>NSExtensionServiceFinderPreviewIconName</key>
|
||||
<string>NSActionTemplate</string>
|
||||
<key>NSExtensionServiceTouchBarBezelColorName</key>
|
||||
<string>TouchBarBezel</string>
|
||||
<key>NSExtensionServiceTouchBarIconName</key>
|
||||
<string>NSActionTemplate</string>
|
||||
</dict>
|
||||
<key>NSExtensionPointIdentifier</key>
|
||||
<string>com.apple.services</string>
|
||||
<key>NSExtensionPrincipalClass</key>
|
||||
<string>$(PRODUCT_MODULE_NAME).ActionRequestHandler</string>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "MastodonActionExtensionIcon@3x.png",
|
||||
"idiom" : "universal",
|
||||
"platform" : "ios",
|
||||
"size" : "1024x1024"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
Binary file not shown.
After Width: | Height: | Size: 86 KiB |
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
},
|
||||
"colors" : [
|
||||
{
|
||||
"idiom" : "mac",
|
||||
"color" : {
|
||||
"reference" : "systemPurpleColor"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -28,6 +28,11 @@
|
|||
2A3F6FE5292F6E44002E6DA7 /* FollowedTagsTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A3F6FE4292F6E44002E6DA7 /* FollowedTagsTableViewCell.swift */; };
|
||||
2A506CF4292CD85800059C37 /* FollowedTagsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A506CF3292CD85800059C37 /* FollowedTagsViewController.swift */; };
|
||||
2A506CF6292D040100059C37 /* HashtagTimelineHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A506CF5292D040100059C37 /* HashtagTimelineHeaderView.swift */; };
|
||||
2A64515E29642A8A00CD8B8A /* UniformTypeIdentifiers.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2A6451022964223800CD8B8A /* UniformTypeIdentifiers.framework */; };
|
||||
2A64516129642A8B00CD8B8A /* Media.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 2A64516029642A8B00CD8B8A /* Media.xcassets */; };
|
||||
2A64516329642A8B00CD8B8A /* ActionRequestHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A64516229642A8B00CD8B8A /* ActionRequestHandler.swift */; };
|
||||
2A64516529642A8B00CD8B8A /* Action.js in Resources */ = {isa = PBXBuildFile; fileRef = 2A64516429642A8B00CD8B8A /* Action.js */; };
|
||||
2A64516929642A8B00CD8B8A /* FollowActionExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 2A64515D29642A8A00CD8B8A /* FollowActionExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
|
||||
2A76F75C2930D94700B3388D /* HashtagTimelineHeaderViewActionButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A76F75B2930D94700B3388D /* HashtagTimelineHeaderViewActionButton.swift */; };
|
||||
2A82294F29262EE000D2A1F7 /* AppContext+NextAccount.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A82294E29262EE000D2A1F7 /* AppContext+NextAccount.swift */; };
|
||||
2AB12E4629362F27006BC925 /* DataSourceFacade+Translate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2AB12E4529362F27006BC925 /* DataSourceFacade+Translate.swift */; };
|
||||
|
@ -454,6 +459,13 @@
|
|||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
2A64516729642A8B00CD8B8A /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = DB427DCA25BAA00100D1B89D /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 2A64515C29642A8A00CD8B8A;
|
||||
remoteInfo = FollowActionExtension;
|
||||
};
|
||||
DB427DE925BAA00100D1B89D /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = DB427DCA25BAA00100D1B89D /* Project object */;
|
||||
|
@ -521,6 +533,7 @@
|
|||
dstSubfolderSpec = 13;
|
||||
files = (
|
||||
DB8FABCE26AEC7B2008E5AF4 /* MastodonIntent.appex in Embed Foundation Extensions */,
|
||||
2A64516929642A8B00CD8B8A /* FollowActionExtension.appex in Embed Foundation Extensions */,
|
||||
DBC6461C26A170AB00B0E31B /* ShareActionExtension.appex in Embed Foundation Extensions */,
|
||||
DBF8AE1A263293E400C9C23C /* NotificationService.appex in Embed Foundation Extensions */,
|
||||
);
|
||||
|
@ -553,6 +566,12 @@
|
|||
2A3F6FE4292F6E44002E6DA7 /* FollowedTagsTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FollowedTagsTableViewCell.swift; sourceTree = "<group>"; };
|
||||
2A506CF3292CD85800059C37 /* FollowedTagsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FollowedTagsViewController.swift; sourceTree = "<group>"; };
|
||||
2A506CF5292D040100059C37 /* HashtagTimelineHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HashtagTimelineHeaderView.swift; sourceTree = "<group>"; };
|
||||
2A6451022964223800CD8B8A /* UniformTypeIdentifiers.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UniformTypeIdentifiers.framework; path = System/Library/Frameworks/UniformTypeIdentifiers.framework; sourceTree = SDKROOT; };
|
||||
2A64515D29642A8A00CD8B8A /* FollowActionExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = FollowActionExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
2A64516029642A8B00CD8B8A /* Media.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Media.xcassets; sourceTree = "<group>"; };
|
||||
2A64516229642A8B00CD8B8A /* ActionRequestHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActionRequestHandler.swift; sourceTree = "<group>"; };
|
||||
2A64516429642A8B00CD8B8A /* Action.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = Action.js; sourceTree = "<group>"; };
|
||||
2A64516629642A8B00CD8B8A /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
2A76F75B2930D94700B3388D /* HashtagTimelineHeaderViewActionButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HashtagTimelineHeaderViewActionButton.swift; sourceTree = "<group>"; };
|
||||
2A82294E29262EE000D2A1F7 /* AppContext+NextAccount.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AppContext+NextAccount.swift"; sourceTree = "<group>"; };
|
||||
2AB12E4529362F27006BC925 /* DataSourceFacade+Translate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DataSourceFacade+Translate.swift"; sourceTree = "<group>"; };
|
||||
|
@ -1108,6 +1127,14 @@
|
|||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
2A64515A29642A8A00CD8B8A /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
2A64515E29642A8A00CD8B8A /* UniformTypeIdentifiers.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
DB427DCF25BAA00100D1B89D /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
|
@ -1291,6 +1318,17 @@
|
|||
path = FollowedTags;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
2A64515F29642A8B00CD8B8A /* FollowActionExtension */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
2A64516029642A8B00CD8B8A /* Media.xcassets */,
|
||||
2A64516229642A8B00CD8B8A /* ActionRequestHandler.swift */,
|
||||
2A64516429642A8B00CD8B8A /* Action.js */,
|
||||
2A64516629642A8B00CD8B8A /* Info.plist */,
|
||||
);
|
||||
path = FollowActionExtension;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
2D152A8A25C295B8009AA50C /* Content */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
|
@ -1509,6 +1547,7 @@
|
|||
F4A2A2D7000E477CA459ADA9 /* Pods_AppShared.framework */,
|
||||
DB8FAB9E26AEC3A2008E5AF4 /* Intents.framework */,
|
||||
DB8FABA926AEC3A2008E5AF4 /* IntentsUI.framework */,
|
||||
2A6451022964223800CD8B8A /* UniformTypeIdentifiers.framework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
|
@ -1826,6 +1865,7 @@
|
|||
DBF8AE14263293E400C9C23C /* NotificationService */,
|
||||
DBC6461326A170AB00B0E31B /* ShareActionExtension */,
|
||||
DB8FABC826AEC7B2008E5AF4 /* MastodonIntent */,
|
||||
2A64515F29642A8B00CD8B8A /* FollowActionExtension */,
|
||||
DB427DD325BAA00100D1B89D /* Products */,
|
||||
1EBA4F56E920856A3FC84ACB /* Pods */,
|
||||
3FE14AD363ED19AE7FF210A6 /* Frameworks */,
|
||||
|
@ -1843,6 +1883,7 @@
|
|||
DBF8AE13263293E400C9C23C /* NotificationService.appex */,
|
||||
DBC6461226A170AB00B0E31B /* ShareActionExtension.appex */,
|
||||
DB8FABC626AEC7B2008E5AF4 /* MastodonIntent.appex */,
|
||||
2A64515D29642A8A00CD8B8A /* FollowActionExtension.appex */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
|
@ -2784,6 +2825,23 @@
|
|||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
2A64515C29642A8A00CD8B8A /* FollowActionExtension */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 2A64516A29642A8B00CD8B8A /* Build configuration list for PBXNativeTarget "FollowActionExtension" */;
|
||||
buildPhases = (
|
||||
2A64515929642A8A00CD8B8A /* Sources */,
|
||||
2A64515A29642A8A00CD8B8A /* Frameworks */,
|
||||
2A64515B29642A8A00CD8B8A /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = FollowActionExtension;
|
||||
productName = FollowActionExtension;
|
||||
productReference = 2A64515D29642A8A00CD8B8A /* FollowActionExtension.appex */;
|
||||
productType = "com.apple.product-type.app-extension";
|
||||
};
|
||||
DB427DD125BAA00100D1B89D /* Mastodon */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = DB427DFC25BAA00100D1B89D /* Build configuration list for PBXNativeTarget "Mastodon" */;
|
||||
|
@ -2805,6 +2863,7 @@
|
|||
DBF8AE19263293E400C9C23C /* PBXTargetDependency */,
|
||||
DBC6461B26A170AB00B0E31B /* PBXTargetDependency */,
|
||||
DB8FABCD26AEC7B2008E5AF4 /* PBXTargetDependency */,
|
||||
2A64516829642A8B00CD8B8A /* PBXTargetDependency */,
|
||||
);
|
||||
name = Mastodon;
|
||||
packageProductDependencies = (
|
||||
|
@ -2923,9 +2982,12 @@
|
|||
DB427DCA25BAA00100D1B89D /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastSwiftUpdateCheck = 1250;
|
||||
LastSwiftUpdateCheck = 1420;
|
||||
LastUpgradeCheck = 1400;
|
||||
TargetAttributes = {
|
||||
2A64515C29642A8A00CD8B8A = {
|
||||
CreatedOnToolsVersion = 14.2;
|
||||
};
|
||||
DB427DD125BAA00100D1B89D = {
|
||||
CreatedOnToolsVersion = 12.4;
|
||||
LastSwiftMigration = 1300;
|
||||
|
@ -2995,11 +3057,21 @@
|
|||
DBF8AE12263293E400C9C23C /* NotificationService */,
|
||||
DBC6461126A170AB00B0E31B /* ShareActionExtension */,
|
||||
DB8FABC526AEC7B2008E5AF4 /* MastodonIntent */,
|
||||
2A64515C29642A8A00CD8B8A /* FollowActionExtension */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
2A64515B29642A8A00CD8B8A /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
2A64516529642A8B00CD8B8A /* Action.js in Resources */,
|
||||
2A64516129642A8B00CD8B8A /* Media.xcassets in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
DB427DD025BAA00100D1B89D /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
|
@ -3218,6 +3290,14 @@
|
|||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
2A64515929642A8A00CD8B8A /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
2A64516329642A8B00CD8B8A /* ActionRequestHandler.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
DB427DCE25BAA00100D1B89D /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
|
@ -3678,6 +3758,11 @@
|
|||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
2A64516829642A8B00CD8B8A /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = 2A64515C29642A8A00CD8B8A /* FollowActionExtension */;
|
||||
targetProxy = 2A64516729642A8B00CD8B8A /* PBXContainerItemProxy */;
|
||||
};
|
||||
DB427DEA25BAA00100D1B89D /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = DB427DD125BAA00100D1B89D /* Mastodon */;
|
||||
|
@ -3833,6 +3918,123 @@
|
|||
/* End PBXVariantGroup section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
2A64516B29642A8B00CD8B8A /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = Icon;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
INFOPLIST_FILE = FollowActionExtension/Info.plist;
|
||||
INFOPLIST_KEY_CFBundleDisplayName = "Follow on Mastodon";
|
||||
INFOPLIST_KEY_NSHumanReadableCopyright = "";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
"@executable_path/../../Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.FollowActionExtension;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_EMIT_LOC_STRINGS = YES;
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
2A64516C29642A8B00CD8B8A /* Profile */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = Icon;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
INFOPLIST_FILE = FollowActionExtension/Info.plist;
|
||||
INFOPLIST_KEY_CFBundleDisplayName = "Follow on Mastodon";
|
||||
INFOPLIST_KEY_NSHumanReadableCopyright = "";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
"@executable_path/../../Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.FollowActionExtension;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_EMIT_LOC_STRINGS = YES;
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = Profile;
|
||||
};
|
||||
2A64516D29642A8B00CD8B8A /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = Icon;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
INFOPLIST_FILE = FollowActionExtension/Info.plist;
|
||||
INFOPLIST_KEY_CFBundleDisplayName = "Follow on Mastodon";
|
||||
INFOPLIST_KEY_NSHumanReadableCopyright = "";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
"@executable_path/../../Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.FollowActionExtension;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_EMIT_LOC_STRINGS = YES;
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
2A64516E29642A8B00CD8B8A /* Release Snapshot */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = Icon;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEVELOPMENT_TEAM = 5Z4GVSS33P;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
INFOPLIST_FILE = FollowActionExtension/Info.plist;
|
||||
INFOPLIST_KEY_CFBundleDisplayName = "Follow on Mastodon";
|
||||
INFOPLIST_KEY_NSHumanReadableCopyright = "";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
"@executable_path/../../Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.FollowActionExtension;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_EMIT_LOC_STRINGS = YES;
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = "Release Snapshot";
|
||||
};
|
||||
DB427DFA25BAA00100D1B89D /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
|
@ -3959,6 +4161,7 @@
|
|||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 2E1F6A67FDF9771D3E064FDC /* Pods-Mastodon.debug.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
|
@ -3989,6 +4192,7 @@
|
|||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 75E3471C898DDD9631729B6E /* Pods-Mastodon.release.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
|
@ -4176,6 +4380,7 @@
|
|||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 7CB58D292DA7ACEF179A9050 /* Pods-Mastodon.profile.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
|
@ -4466,6 +4671,7 @@
|
|||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 0655B257371274BEB7EB1C19 /* Pods-Mastodon.release snapshot.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
|
@ -4651,6 +4857,17 @@
|
|||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
2A64516A29642A8B00CD8B8A /* Build configuration list for PBXNativeTarget "FollowActionExtension" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
2A64516B29642A8B00CD8B8A /* Debug */,
|
||||
2A64516C29642A8B00CD8B8A /* Profile */,
|
||||
2A64516D29642A8B00CD8B8A /* Release */,
|
||||
2A64516E29642A8B00CD8B8A /* Release Snapshot */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
DB427DCD25BAA00100D1B89D /* Build configuration list for PBXProject "Mastodon" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
|
|
Loading…
Reference in New Issue