Skip to content

Commit 5965024

Browse files
authored
Remove WPAppGroupName and WPAppKeychainAccessGroup from Constants.h (Part 1) (#24214)
* Add BuildSettings * Add new values to the app plist files * Remove unused Info.plist files from JetpackShareExtension * Remove similar unused Info.plist files from WordPressShareExtension * Remove similat plist files from Draft extensions * Remove more unused plist files * Add WPAppGroupName and WPAppKeychainAccessGroup to remaining targets * Update ShareExtensionService to use BuildSettings * Integrate BuildSettingsKit in ShareExtensionService * Reverse changse * Remove two more unwanted plist files * And two more * Fix compilation (typo) * Remove unused -Internal entitlements * Remove WPAppGroupName and WPAppKeychainAccessGroup from Constants.h (Part 2) (#24218) * Update StatsWidgetsStore * Replace remainig WPAppGroupName usages * Add BuildSettingsKit to JetpackIntents app extension and expose these settings via its plist file * Remove WPAppGroupName from Constants.h * Update NotificationSupportService * Update StatsWidgetsStore * Remove remaining WPAppKeychainAccessGroup usages * Remove WPAppKeychainAccessGroup from Constants.h * Add missing package
1 parent 78d8f89 commit 5965024

File tree

67 files changed

+332
-2196
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

67 files changed

+332
-2196
lines changed

Modules/Package.swift

+7
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ let package = Package(
5959
.product(name: "Collections", package: "swift-collections"),
6060
.product(name: "Gifu", package: "Gifu"),
6161
]),
62+
.target(name: "BuildSettingsKit"),
6263
.target(name: "DesignSystem", swiftSettings: [.swiftLanguageMode(.v5)]),
6364
.target(name: "JetpackStatsWidgetsCore", swiftSettings: [.swiftLanguageMode(.v5)]),
6465
// SFHFKeychainUtils is an old Objective-C keychain wrapper.
@@ -151,6 +152,7 @@ enum XcodeSupport {
151152

152153
static var targets: [Target] {
153154
let wordPresAuthentificatorDependencies: [Target.Dependency] = [
155+
"BuildSettingsKit",
154156
"WordPressShared",
155157
"WordPressUI",
156158
.product(name: "Gridicons", package: "Gridicons-iOS"),
@@ -162,6 +164,7 @@ enum XcodeSupport {
162164
]
163165

164166
let shareAndDraftExtensionsDependencies: [Target.Dependency] = [
167+
"BuildSettingsKit",
165168
"SFHFKeychainUtils",
166169
"WordPressShared",
167170
"WordPressUI",
@@ -185,6 +188,7 @@ enum XcodeSupport {
185188
return [
186189
.xcodeTarget("XcodeTarget_App", dependencies: [
187190
"DesignSystem",
191+
"BuildSettingsKit",
188192
"JetpackStatsWidgetsCore",
189193
"SFHFKeychainUtils",
190194
"WordPressData",
@@ -238,8 +242,10 @@ enum XcodeSupport {
238242
.xcodeTarget("XcodeTarget_NotificationServiceExtension", dependencies: [
239243
"SFHFKeychainUtils",
240244
"WordPressShared",
245+
"BuildSettingsKit",
241246
]),
242247
.xcodeTarget("XcodeTarget_StatsWidget", dependencies: [
248+
"BuildSettingsKit",
243249
"JetpackStatsWidgetsCore",
244250
"SFHFKeychainUtils",
245251
"WordPressShared",
@@ -249,6 +255,7 @@ enum XcodeSupport {
249255
.product(name: "ColorStudio", package: "color-studio"),
250256
]),
251257
.xcodeTarget("XcodeTarget_Intents", dependencies: [
258+
"BuildSettingsKit",
252259
"JetpackStatsWidgetsCore",
253260
.product(name: "CocoaLumberjackSwift", package: "CocoaLumberjack"),
254261
]),
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import Foundation
2+
3+
/// Provides convenient access for values defined in Info.plist files for
4+
/// apps and app extensions.
5+
///
6+
/// - warning: Most of these values exist only in Info.plist files for apps as
7+
/// app extensions only need a tiny subset of these settings.
8+
public enum BuildSettings {
9+
public static var appGroupName: String {
10+
infoPlistValue(forKey: "WPAppGroupName")
11+
}
12+
13+
public static var appKeychainAccessGroup: String {
14+
infoPlistValue(forKey: "WPAppKeychainAccessGroup")
15+
}
16+
}
17+
18+
private func infoPlistValue<T>(forKey key: String) -> T where T: LosslessStringConvertible {
19+
guard let object = Bundle.main.object(forInfoDictionaryKey: key) else {
20+
fatalError("missing value for key: \(key)")
21+
}
22+
switch object {
23+
case let value as T:
24+
return value
25+
case let string as String:
26+
guard let value = T(string) else { fallthrough }
27+
return value
28+
default:
29+
fatalError("unexpected value: \(object) for key: \(key)")
30+
}
31+
}

WordPress/Classes/Services/AccountService.m

+11-8
Original file line numberDiff line numberDiff line change
@@ -404,23 +404,26 @@ - (void)setupAppExtensionsWithDefaultAccount:(WPAccount *)defaultAccount inConte
404404
NSNumber *siteId = defaultBlog.dotComID;
405405
NSString *blogName = defaultBlog.settings.name;
406406

407+
ShareExtensionService *shareExtensionService = [ShareExtensionService new];
408+
NotificationSupportService *notificationSupportService = [NotificationSupportService new];
409+
407410
if (defaultBlog == nil || defaultBlog.isDeleted) {
408411
dispatch_async(dispatch_get_main_queue(), ^{
409-
[ShareExtensionService removeShareExtensionConfiguration];
412+
[shareExtensionService removeShareExtensionConfiguration];
410413

411-
[NotificationSupportService deleteServiceExtensionToken];
414+
[notificationSupportService deleteServiceExtensionToken];
412415
});
413416
} else {
414417
dispatch_async(dispatch_get_main_queue(), ^{
415418
WPAccount *defaultAccount = [self.coreDataStack.mainContext existingObjectWithID:defaultAccountObjectID error:nil];
416419

417-
[ShareExtensionService configureShareExtensionDefaultSiteID:siteId.integerValue defaultSiteName:blogName];
418-
[ShareExtensionService configureShareExtensionToken:defaultAccount.authToken];
419-
[ShareExtensionService configureShareExtensionUsername:defaultAccount.username];
420+
[shareExtensionService configureShareExtensionDefaultSiteID:siteId.integerValue defaultSiteName:blogName];
421+
[shareExtensionService configureShareExtensionToken:defaultAccount.authToken];
422+
[shareExtensionService configureShareExtensionUsername:defaultAccount.username];
420423

421-
[NotificationSupportService insertServiceExtensionToken:defaultAccount.authToken];
422-
[NotificationSupportService insertServiceExtensionUsername:defaultAccount.username];
423-
[NotificationSupportService insertServiceExtensionUserID:defaultAccount.userID.stringValue];
424+
[notificationSupportService insertServiceExtensionToken:defaultAccount.authToken];
425+
[notificationSupportService insertServiceExtensionUsername:defaultAccount.username];
426+
[notificationSupportService insertServiceExtensionUserID:defaultAccount.userID.stringValue];
424427
});
425428
}
426429
}

WordPress/Classes/Services/NotificationSupportService.swift

+23-12
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,31 @@
11
import Foundation
2+
import BuildSettingsKit
23
import SFHFKeychainUtils
34

45
@objc
56
open class NotificationSupportService: NSObject {
7+
private let appKeychainAccessGroup: String
8+
9+
@objc convenience override init() {
10+
self.init(appKeychainAccessGroup: BuildSettings.appKeychainAccessGroup)
11+
}
12+
13+
init(appKeychainAccessGroup: String) {
14+
self.appKeychainAccessGroup = appKeychainAccessGroup
15+
}
16+
617
/// Sets the OAuth Token that should be used by the Notification Service Extension to access WPCOM.
718
///
819
/// - Parameter oauth2Token: WordPress.com OAuth Token
920
///
1021
@objc
11-
class func insertServiceExtensionToken(_ oauthToken: String) {
22+
func insertServiceExtensionToken(_ oauthToken: String) {
1223
do {
1324
try SFHFKeychainUtils.storeUsername(
1425
AppConfiguration.Extension.NotificationsService.keychainTokenKey,
1526
andPassword: oauthToken,
1627
forServiceName: AppConfiguration.Extension.NotificationsService.keychainServiceName,
17-
accessGroup: WPAppKeychainAccessGroup,
28+
accessGroup: appKeychainAccessGroup,
1829
updateExisting: true
1930
)
2031
} catch {
@@ -27,13 +38,13 @@ open class NotificationSupportService: NSObject {
2738
/// - Parameter username: WordPress.com username
2839
///
2940
@objc
30-
class func insertServiceExtensionUsername(_ username: String) {
41+
func insertServiceExtensionUsername(_ username: String) {
3142
do {
3243
try SFHFKeychainUtils.storeUsername(
3344
AppConfiguration.Extension.NotificationsService.keychainUsernameKey,
3445
andPassword: username,
3546
forServiceName: AppConfiguration.Extension.NotificationsService.keychainServiceName,
36-
accessGroup: WPAppKeychainAccessGroup,
47+
accessGroup: appKeychainAccessGroup,
3748
updateExisting: true
3849
)
3950
} catch {
@@ -46,13 +57,13 @@ open class NotificationSupportService: NSObject {
4657
/// - Parameter userID: WordPress.com userID
4758
///
4859
@objc
49-
class func insertServiceExtensionUserID(_ userID: String) {
60+
func insertServiceExtensionUserID(_ userID: String) {
5061
do {
5162
try SFHFKeychainUtils.storeUsername(
5263
AppConfiguration.Extension.NotificationsService.keychainUserIDKey,
5364
andPassword: userID,
5465
forServiceName: AppConfiguration.Extension.NotificationsService.keychainServiceName,
55-
accessGroup: WPAppKeychainAccessGroup,
66+
accessGroup: appKeychainAccessGroup,
5667
updateExisting: true
5768
)
5869
} catch {
@@ -63,12 +74,12 @@ open class NotificationSupportService: NSObject {
6374
/// Attempts to delete the current WPCOM OAuth Token used by the Notification Service Extension.
6475
///
6576
@objc
66-
class func deleteServiceExtensionToken() {
77+
func deleteServiceExtensionToken() {
6778
do {
6879
try SFHFKeychainUtils.deleteItem(
6980
forUsername: AppConfiguration.Extension.NotificationsService.keychainTokenKey,
7081
andServiceName: AppConfiguration.Extension.NotificationsService.keychainServiceName,
71-
accessGroup: WPAppKeychainAccessGroup
82+
accessGroup: appKeychainAccessGroup
7283
)
7384
} catch {
7485
DDLogDebug("Error while removing Notification Service Extension OAuth token: \(error)")
@@ -78,12 +89,12 @@ open class NotificationSupportService: NSObject {
7889
/// Attempts to delete the current WPCOM Username used by the Notification Service Extension.
7990
///
8091
@objc
81-
class func deleteServiceExtensionUsername() {
92+
func deleteServiceExtensionUsername() {
8293
do {
8394
try SFHFKeychainUtils.deleteItem(
8495
forUsername: AppConfiguration.Extension.NotificationsService.keychainUsernameKey,
8596
andServiceName: AppConfiguration.Extension.NotificationsService.keychainServiceName,
86-
accessGroup: WPAppKeychainAccessGroup
97+
accessGroup: appKeychainAccessGroup
8798
)
8899
} catch {
89100
DDLogDebug("Error while removing Notification Service Extension username: \(error)")
@@ -93,12 +104,12 @@ open class NotificationSupportService: NSObject {
93104
/// Attempts to delete the current WPCOM Username used by the Notification Service Extension.
94105
///
95106
@objc
96-
class func deleteServiceExtensionUserID() {
107+
func deleteServiceExtensionUserID() {
97108
do {
98109
try SFHFKeychainUtils.deleteItem(
99110
forUsername: AppConfiguration.Extension.NotificationsService.keychainUserIDKey,
100111
andServiceName: AppConfiguration.Extension.NotificationsService.keychainServiceName,
101-
accessGroup: WPAppKeychainAccessGroup
112+
accessGroup: appKeychainAccessGroup
102113
)
103114
} catch {
104115
DDLogDebug("Error while removing Notification Service Extension userID: \(error)")

0 commit comments

Comments
 (0)