Rename Xcode project to honeyDue and fix all bundle IDs
- Rename iosApp.xcodeproj → honeyDue.xcodeproj - Rename Casera schemes → HoneyDue, HoneyDueExtension, HoneyDueUITests - Split bundle IDs per-config: Debug=com.tt.honeyDue.dev, Release=com.tt.honeyDue - Split app groups per-config: Debug=group.com.tt.honeyDue.dev, Release=group.com.tt.honeyDue - Fix com.t-t. typo → com.tt. in test bundle IDs - Add APP_GROUP_IDENTIFIER build setting with variable substitution in entitlements - Replace all hardcoded app group strings in Swift with Info.plist runtime reads - Remove stale PRODUCT_BUNDLE_IDENTIFIER from Config.xcconfig - Update test plan container references Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -24,7 +24,7 @@
|
||||
"SimpleLoginTest\/testCanTypeInLoginFields()"
|
||||
],
|
||||
"target" : {
|
||||
"containerPath" : "container:iosApp.xcodeproj",
|
||||
"containerPath" : "container:honeyDue.xcodeproj",
|
||||
"identifier" : "1CBF1BEC2ECD9768001BF56C",
|
||||
"name" : "HoneyDueUITests"
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
TEAM_ID=
|
||||
|
||||
PRODUCT_NAME=honeyDue
|
||||
PRODUCT_BUNDLE_IDENTIFIER=com.tt.honeyDue.HoneyDue$(TEAM_ID)
|
||||
|
||||
CURRENT_PROJECT_VERSION=1
|
||||
MARKETING_VERSION=1.0
|
||||
@@ -147,7 +147,9 @@ struct OpenTaskIntent: AppIntent {
|
||||
final class WidgetActionManager {
|
||||
static let shared = WidgetActionManager()
|
||||
|
||||
private let appGroupIdentifier = "group.com.tt.honeyDue.HoneyDueDev"
|
||||
private let appGroupIdentifier: String = {
|
||||
Bundle.main.infoDictionary?["AppGroupIdentifier"] as? String ?? "group.com.tt.honeyDue.dev"
|
||||
}()
|
||||
private let pendingTasksFileName = "widget_pending_tasks.json"
|
||||
private let tokenKey = "widget_auth_token"
|
||||
private let dirtyFlagKey = "widget_tasks_dirty"
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "icon.png",
|
||||
"idiom" : "universal",
|
||||
"platform" : "ios",
|
||||
"size" : "1024x1024"
|
||||
|
||||
@@ -110,7 +110,9 @@ class CacheManager {
|
||||
}
|
||||
}
|
||||
|
||||
private static let appGroupIdentifier = "group.com.tt.honeyDue.HoneyDueDev"
|
||||
private static let appGroupIdentifier: String = {
|
||||
Bundle.main.infoDictionary?["AppGroupIdentifier"] as? String ?? "group.com.tt.honeyDue.dev"
|
||||
}()
|
||||
private static let tasksFileName = "widget_tasks.json"
|
||||
|
||||
/// Get the shared App Group container URL
|
||||
|
||||
@@ -2,6 +2,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>AppGroupIdentifier</key>
|
||||
<string>$(APP_GROUP_IDENTIFIER)</string>
|
||||
<key>NSExtension</key>
|
||||
<dict>
|
||||
<key>NSExtensionPointIdentifier</key>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<dict>
|
||||
<key>com.apple.security.application-groups</key>
|
||||
<array>
|
||||
<string>group.com.tt.honeyDue.HoneyDueDev</string>
|
||||
<string>$(APP_GROUP_IDENTIFIER)</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
|
||||
37
iosApp/HoneyDueUITests.xctestplan
Normal file
37
iosApp/HoneyDueUITests.xctestplan
Normal file
@@ -0,0 +1,37 @@
|
||||
{
|
||||
"configurations" : [
|
||||
{
|
||||
"id" : "F0DABEBB-1E5F-4A1A-BFDC-5AAA8635B8BA",
|
||||
"name" : "Test Scheme Action",
|
||||
"options" : {
|
||||
|
||||
}
|
||||
}
|
||||
],
|
||||
"defaultOptions" : {
|
||||
"performanceAntipatternCheckerEnabled" : true,
|
||||
"targetForVariableExpansion" : {
|
||||
"containerPath" : "container:honeyDue.xcodeproj",
|
||||
"identifier" : "D4ADB376A7A4CFB73469E173",
|
||||
"name" : "HoneyDue"
|
||||
}
|
||||
},
|
||||
"testTargets" : [
|
||||
{
|
||||
"parallelizable" : true,
|
||||
"target" : {
|
||||
"containerPath" : "container:honeyDue.xcodeproj",
|
||||
"identifier" : "1C685CD12EC5539000A9669B",
|
||||
"name" : "HoneyDueTests"
|
||||
}
|
||||
},
|
||||
{
|
||||
"target" : {
|
||||
"containerPath" : "container:honeyDue.xcodeproj",
|
||||
"identifier" : "1CBF1BEC2ECD9768001BF56C",
|
||||
"name" : "HoneyDueUITests"
|
||||
}
|
||||
}
|
||||
],
|
||||
"version" : 1
|
||||
}
|
||||
@@ -5,7 +5,7 @@ import XCTest
|
||||
/// SETUP REQUIREMENTS:
|
||||
/// This test suite requires the app to be UNINSTALLED before running.
|
||||
/// Add a Pre-action script to the honeyDueUITests scheme (Edit Scheme → Test → Pre-actions):
|
||||
/// /usr/bin/xcrun simctl uninstall booted com.tt.honeyDue.HoneyDueDev
|
||||
/// /usr/bin/xcrun simctl uninstall booted com.tt.honeyDue.dev
|
||||
/// exit 0
|
||||
///
|
||||
/// There is ONE fresh-install test that runs the complete onboarding flow.
|
||||
|
||||
@@ -44,14 +44,14 @@
|
||||
containerPortal = 6A3E1D84F9F1A2FD92A75A6C /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = D4ADB376A7A4CFB73469E173;
|
||||
remoteInfo = iosApp;
|
||||
remoteInfo = honeyDue;
|
||||
};
|
||||
1CBF1BF32ECD9768001BF56C /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 6A3E1D84F9F1A2FD92A75A6C /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = D4ADB376A7A4CFB73469E173;
|
||||
remoteInfo = iosApp;
|
||||
remoteInfo = honeyDue;
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
@@ -457,7 +457,7 @@
|
||||
packageProductDependencies = (
|
||||
1C81F38F2EE69AF1000739EA /* PostHog */,
|
||||
);
|
||||
productName = iosApp;
|
||||
productName = honeyDue;
|
||||
productReference = 96A3DDC05E14B3F83E56282F /* HoneyDue.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
@@ -493,7 +493,7 @@
|
||||
};
|
||||
};
|
||||
};
|
||||
buildConfigurationList = F25B3A5CCAC6BFCC21CD4636 /* Build configuration list for PBXProject "iosApp" */;
|
||||
buildConfigurationList = F25B3A5CCAC6BFCC21CD4636 /* Build configuration list for PBXProject "honeyDue" */;
|
||||
developmentRegion = en;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
@@ -664,6 +664,7 @@
|
||||
0248CABA5A5197845F2E5C26 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
APP_GROUP_IDENTIFIER = group.com.tt.honeyDue;
|
||||
ARCHS = arm64;
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||
@@ -688,7 +689,7 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.tt.honeyDue.HoneyDueDev;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.tt.honeyDue;
|
||||
SWIFT_EMIT_LOC_STRINGS = YES;
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
@@ -718,7 +719,8 @@
|
||||
);
|
||||
MARKETING_VERSION = 1.0;
|
||||
OTHER_SWIFT_FLAGS = "-DWIDGET_EXTENSION";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.tt.honeyDue.HoneyDueDev.HoneyDueDev;
|
||||
APP_GROUP_IDENTIFIER = group.com.tt.honeyDue.dev;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.tt.honeyDue.dev.HoneyDueExtension;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
STRING_CATALOG_GENERATE_SYMBOLS = YES;
|
||||
@@ -753,7 +755,8 @@
|
||||
);
|
||||
MARKETING_VERSION = 1.0;
|
||||
OTHER_SWIFT_FLAGS = "-DWIDGET_EXTENSION";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.tt.honeyDue.HoneyDueDev.HoneyDueDev;
|
||||
APP_GROUP_IDENTIFIER = group.com.tt.honeyDue;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.tt.honeyDue.HoneyDueExtension;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
STRING_CATALOG_GENERATE_SYMBOLS = YES;
|
||||
@@ -777,7 +780,7 @@
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 26.1;
|
||||
MARKETING_VERSION = 1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.t-t.HoneyDueTests";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.tt.HoneyDueTests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
STRING_CATALOG_GENERATE_SYMBOLS = NO;
|
||||
SWIFT_APPROACHABLE_CONCURRENCY = YES;
|
||||
@@ -803,7 +806,7 @@
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 26.1;
|
||||
MARKETING_VERSION = 1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.t-t.HoneyDueTests";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.tt.HoneyDueTests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
STRING_CATALOG_GENERATE_SYMBOLS = NO;
|
||||
SWIFT_APPROACHABLE_CONCURRENCY = YES;
|
||||
@@ -836,7 +839,7 @@
|
||||
"@executable_path/../../Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.tt.honeyDue.HoneyDueDev.HoneyDueQLPreview;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.tt.honeyDue.dev.HoneyDueQLPreview;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
STRING_CATALOG_GENERATE_SYMBOLS = YES;
|
||||
@@ -867,7 +870,7 @@
|
||||
"@executable_path/../../Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.tt.honeyDue.HoneyDueDev.HoneyDueQLPreview;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.tt.honeyDue.HoneyDueQLPreview;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
STRING_CATALOG_GENERATE_SYMBOLS = YES;
|
||||
@@ -898,7 +901,7 @@
|
||||
"@executable_path/../../Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.tt.honeyDue.HoneyDueDev.HoneyDueQLThumbnail;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.tt.honeyDue.dev.HoneyDueQLThumbnail;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
STRING_CATALOG_GENERATE_SYMBOLS = YES;
|
||||
@@ -929,7 +932,7 @@
|
||||
"@executable_path/../../Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.tt.honeyDue.HoneyDueDev.HoneyDueQLThumbnail;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.tt.honeyDue.HoneyDueQLThumbnail;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
STRING_CATALOG_GENERATE_SYMBOLS = YES;
|
||||
@@ -952,7 +955,7 @@
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 26.1;
|
||||
MACOSX_DEPLOYMENT_TARGET = 26.1;
|
||||
MARKETING_VERSION = 1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.t-t.HoneyDueUITests";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.tt.HoneyDueUITests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SDKROOT = auto;
|
||||
STRING_CATALOG_GENERATE_SYMBOLS = NO;
|
||||
@@ -978,7 +981,7 @@
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 26.1;
|
||||
MACOSX_DEPLOYMENT_TARGET = 26.1;
|
||||
MARKETING_VERSION = 1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.t-t.HoneyDueUITests";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.tt.HoneyDueUITests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SDKROOT = auto;
|
||||
STRING_CATALOG_GENERATE_SYMBOLS = NO;
|
||||
@@ -1121,6 +1124,7 @@
|
||||
E767E942685C7832D51FF978 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
APP_GROUP_IDENTIFIER = group.com.tt.honeyDue.dev;
|
||||
ARCHS = arm64;
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||
@@ -1145,7 +1149,7 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.tt.honeyDue.HoneyDueDev;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.tt.honeyDue.dev;
|
||||
SWIFT_EMIT_LOC_STRINGS = YES;
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
@@ -1209,7 +1213,7 @@
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
F25B3A5CCAC6BFCC21CD4636 /* Build configuration list for PBXProject "iosApp" */ = {
|
||||
F25B3A5CCAC6BFCC21CD4636 /* Build configuration list for PBXProject "honeyDue" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
80B0F01D77D413305F161C14 /* Debug */,
|
||||
@@ -18,7 +18,7 @@
|
||||
BlueprintIdentifier = "D4ADB376A7A4CFB73469E173"
|
||||
BuildableName = "honeyDue.app"
|
||||
BlueprintName = "HoneyDue"
|
||||
ReferencedContainer = "container:iosApp.xcodeproj">
|
||||
ReferencedContainer = "container:honeyDue.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
@@ -36,7 +36,7 @@
|
||||
BlueprintIdentifier = "1C685CD12EC5539000A9669B"
|
||||
BuildableName = "HoneyDueTests.xctest"
|
||||
BlueprintName = "HoneyDueTests"
|
||||
ReferencedContainer = "container:iosApp.xcodeproj">
|
||||
ReferencedContainer = "container:honeyDue.xcodeproj">
|
||||
</BuildableReference>
|
||||
</TestableReference>
|
||||
</Testables>
|
||||
@@ -58,7 +58,7 @@
|
||||
BlueprintIdentifier = "D4ADB376A7A4CFB73469E173"
|
||||
BuildableName = "honeyDue.app"
|
||||
BlueprintName = "HoneyDue"
|
||||
ReferencedContainer = "container:iosApp.xcodeproj">
|
||||
ReferencedContainer = "container:honeyDue.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
</LaunchAction>
|
||||
@@ -74,7 +74,7 @@
|
||||
BlueprintIdentifier = "D4ADB376A7A4CFB73469E173"
|
||||
BuildableName = "honeyDue.app"
|
||||
BlueprintName = "HoneyDue"
|
||||
ReferencedContainer = "container:iosApp.xcodeproj">
|
||||
ReferencedContainer = "container:honeyDue.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
</ProfileAction>
|
||||
@@ -19,7 +19,7 @@
|
||||
BlueprintIdentifier = "1C07893C2EBC218B00392B46"
|
||||
BuildableName = "HoneyDueExtension.appex"
|
||||
BlueprintName = "HoneyDueExtension"
|
||||
ReferencedContainer = "container:iosApp.xcodeproj">
|
||||
ReferencedContainer = "container:honeyDue.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
<BuildActionEntry
|
||||
@@ -33,7 +33,7 @@
|
||||
BlueprintIdentifier = "D4ADB376A7A4CFB73469E173"
|
||||
BuildableName = "honeyDue.app"
|
||||
BlueprintName = "HoneyDue"
|
||||
ReferencedContainer = "container:iosApp.xcodeproj">
|
||||
ReferencedContainer = "container:honeyDue.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
@@ -53,7 +53,7 @@
|
||||
BlueprintIdentifier = "1CBF1BEC2ECD9768001BF56C"
|
||||
BuildableName = "HoneyDueUITests.xctest"
|
||||
BlueprintName = "HoneyDueUITests"
|
||||
ReferencedContainer = "container:iosApp.xcodeproj">
|
||||
ReferencedContainer = "container:honeyDue.xcodeproj">
|
||||
</BuildableReference>
|
||||
</TestableReference>
|
||||
</Testables>
|
||||
@@ -77,7 +77,7 @@
|
||||
BlueprintIdentifier = "D4ADB376A7A4CFB73469E173"
|
||||
BuildableName = "honeyDue.app"
|
||||
BlueprintName = "HoneyDue"
|
||||
ReferencedContainer = "container:iosApp.xcodeproj">
|
||||
ReferencedContainer = "container:honeyDue.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
<EnvironmentVariables>
|
||||
@@ -113,7 +113,7 @@
|
||||
BlueprintIdentifier = "D4ADB376A7A4CFB73469E173"
|
||||
BuildableName = "honeyDue.app"
|
||||
BlueprintName = "HoneyDue"
|
||||
ReferencedContainer = "container:iosApp.xcodeproj">
|
||||
ReferencedContainer = "container:honeyDue.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
</ProfileAction>
|
||||
@@ -14,7 +14,7 @@
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<TestPlans>
|
||||
<TestPlanReference
|
||||
reference = "container:CaseraUITests.xctestplan"
|
||||
reference = "container:HoneyDueUITests.xctestplan"
|
||||
default = "YES">
|
||||
</TestPlanReference>
|
||||
</TestPlans>
|
||||
@@ -26,7 +26,7 @@
|
||||
BlueprintIdentifier = "1CBF1BEC2ECD9768001BF56C"
|
||||
BuildableName = "HoneyDueUITests.xctest"
|
||||
BlueprintName = "HoneyDueUITests"
|
||||
ReferencedContainer = "container:iosApp.xcodeproj">
|
||||
ReferencedContainer = "container:honeyDue.xcodeproj">
|
||||
</BuildableReference>
|
||||
<SkippedTests>
|
||||
<Test
|
||||
@@ -74,7 +74,7 @@
|
||||
BlueprintIdentifier = "D4ADB376A7A4CFB73469E173"
|
||||
BuildableName = "honeyDue.app"
|
||||
BlueprintName = "HoneyDue"
|
||||
ReferencedContainer = "container:iosApp.xcodeproj">
|
||||
ReferencedContainer = "container:honeyDue.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
</LaunchAction>
|
||||
@@ -90,7 +90,7 @@
|
||||
BlueprintIdentifier = "D4ADB376A7A4CFB73469E173"
|
||||
BuildableName = "honeyDue.app"
|
||||
BlueprintName = "HoneyDue"
|
||||
ReferencedContainer = "container:iosApp.xcodeproj">
|
||||
ReferencedContainer = "container:honeyDue.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
</ProfileAction>
|
||||
@@ -11,7 +11,8 @@ extension Color {
|
||||
/// Shared App Group defaults for reading the active theme.
|
||||
/// Thread-safe: UserDefaults is safe to read from any thread/actor.
|
||||
private static let _themeDefaults: UserDefaults = {
|
||||
UserDefaults(suiteName: "group.com.tt.honeyDue.HoneyDueDev") ?? .standard
|
||||
let groupID = Bundle.main.infoDictionary?["AppGroupIdentifier"] as? String
|
||||
return groupID.flatMap { UserDefaults(suiteName: $0) } ?? .standard
|
||||
}()
|
||||
|
||||
private static func themed(_ name: String) -> Color {
|
||||
|
||||
@@ -60,7 +60,9 @@ enum ThemeID: String, CaseIterable, Codable {
|
||||
}
|
||||
|
||||
// MARK: - Shared App Group UserDefaults
|
||||
private let appGroupID = "group.com.tt.honeyDue.HoneyDueDev"
|
||||
private let appGroupID: String = {
|
||||
Bundle.main.infoDictionary?["AppGroupIdentifier"] as? String ?? "group.com.tt.honeyDue.dev"
|
||||
}()
|
||||
private let sharedDefaults: UserDefaults = {
|
||||
guard let defaults = UserDefaults(suiteName: appGroupID) else {
|
||||
#if DEBUG
|
||||
|
||||
@@ -20,7 +20,9 @@ final class WidgetDataManager {
|
||||
static let completedColumn = "completed_tasks"
|
||||
static let cancelledColumn = "cancelled_tasks"
|
||||
|
||||
private let appGroupIdentifier = "group.com.tt.honeyDue.HoneyDueDev"
|
||||
private let appGroupIdentifier: String = {
|
||||
Bundle.main.infoDictionary?["AppGroupIdentifier"] as? String ?? "group.com.tt.honeyDue.dev"
|
||||
}()
|
||||
private let tasksFileName = "widget_tasks.json"
|
||||
private let actionsFileName = "widget_pending_actions.json"
|
||||
private let pendingTasksFileName = "widget_pending_tasks.json"
|
||||
|
||||
@@ -2,6 +2,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>AppGroupIdentifier</key>
|
||||
<string>$(APP_GROUP_IDENTIFIER)</string>
|
||||
<key>BGTaskSchedulerPermittedIdentifiers</key>
|
||||
<array>
|
||||
<string>com.tt.honeyDue.refresh</string>
|
||||
|
||||
@@ -4257,13 +4257,6 @@
|
||||
"Caption" : {
|
||||
"comment" : "A label displayed above the caption of an image in the photo viewer.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"honeyDue" : {
|
||||
"comment" : "The name of the app.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"HONEYDUE PRO" : {
|
||||
|
||||
},
|
||||
"Change" : {
|
||||
"comment" : "A button that allows the user to change the time in a notification.",
|
||||
@@ -17416,6 +17409,13 @@
|
||||
},
|
||||
"Here are tasks recommended for your area.\nPick the ones you'd like to track!" : {
|
||||
|
||||
},
|
||||
"honeyDue" : {
|
||||
"comment" : "The name of the app.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"HONEYDUE PRO" : {
|
||||
|
||||
},
|
||||
"Hour" : {
|
||||
"comment" : "A picker for selecting an hour.",
|
||||
@@ -17461,14 +17461,14 @@
|
||||
"comment" : "A button label that instructs the user to join an existing residence.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"Join honeyDue" : {
|
||||
"comment" : "A title for the registration screen.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"Join Failed" : {
|
||||
"comment" : "An alert title displayed when joining a residence fails.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"Join honeyDue" : {
|
||||
"comment" : "A title for the registration screen.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"Join Residence" : {
|
||||
"comment" : "A button label that allows a user to join an existing residence.",
|
||||
"isCommentAutoGenerated" : true
|
||||
@@ -17499,11 +17499,11 @@
|
||||
"Logging in..." : {
|
||||
|
||||
},
|
||||
"Manage at honeydue.app" : {
|
||||
"Manage at honeyDue.treytartt.com" : {
|
||||
|
||||
},
|
||||
"Manage your subscription at honeydue.app" : {
|
||||
"comment" : "A text instruction that directs them to manage their subscription on honeydue.app.",
|
||||
"Manage your subscription at honeyDue.treytartt.com" : {
|
||||
"comment" : "A description of how to manage a subscription on a third-party platform.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"Manage your subscription on your Android device" : {
|
||||
@@ -17513,10 +17513,6 @@
|
||||
"comment" : "A button label that says \"Mark Task In Progress\".",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"HoneyDue Icon Animations" : {
|
||||
"comment" : "The title of the playground interface.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"Need inspiration?" : {
|
||||
|
||||
},
|
||||
@@ -17568,8 +17564,8 @@
|
||||
"comment" : "A button that dismisses the success dialog.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"Open honeydue.app" : {
|
||||
"comment" : "A button label that opens the honeydue.app settings page.",
|
||||
"Open honeyDue.treytartt.com" : {
|
||||
"comment" : "A button label that opens the user's subscription management page in a web browser.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"or" : {
|
||||
@@ -21659,10 +21655,6 @@
|
||||
},
|
||||
"Remove User" : {
|
||||
|
||||
},
|
||||
"Replay" : {
|
||||
"comment" : "A button that replays the current animation.",
|
||||
"isCommentAutoGenerated" : true
|
||||
},
|
||||
"Reset All Tasks" : {
|
||||
"comment" : "A button label that resets all tasks.",
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
</array>
|
||||
<key>com.apple.security.application-groups</key>
|
||||
<array>
|
||||
<string>group.com.tt.honeyDue.HoneyDueDev</string>
|
||||
<string>$(APP_GROUP_IDENTIFIER)</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
|
||||
Reference in New Issue
Block a user