feat(ios): implement offline mode & sync conflict resolution (#23)
- Add OfflineSyncCoordinator for managing offline/online transitions - Add OfflineSyncIndicatorView for UI feedback during sync - Add SyncProgress tracking with stage descriptions and progress bars - Add delta sync support with savings tracking - Add BackgroundTaskScheduler interval configs for low-power mode - Add isProcessingTask discriminator to BackgroundTaskID - Add DeltaFetchResult generic type for efficient data fetching - Add SyncProgressStage enum with localized descriptions - Add progress reset on app launch to prevent stale state - Add delta sync savings percentage calculation - Update BackgroundSyncTests with comprehensive coverage - Add OfflineSyncTests for offline queue and conflict resolution - Mark task 22 (Token Refresh) and task 28 (Review Compliance) as done - Update Xcode project with new source files and build phases
This commit is contained in:
@@ -13,6 +13,8 @@
|
||||
05620E6D5F24669F240F75E8 /* LaunchTimer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 824FC0AAC25D43F8BEDDDCF8 /* LaunchTimer.swift */; };
|
||||
05C391F4E6DFD946A30DB2FB /* TRPCBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62763E6E8E89624887F90E47 /* TRPCBridge.swift */; };
|
||||
065699225925ACA0A6EAB6A3 /* WidgetData.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1B49E06ABB132569A2929F5 /* WidgetData.swift */; };
|
||||
07A3D6B7C5DE6BCC7FA745F3 /* NotificationPreferencesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A36F6A869103B6471AD2A101 /* NotificationPreferencesView.swift */; };
|
||||
08157C9830FC256DDA223AED /* SpamCallDirectoryProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE1943ECCB09C6BB3432C808 /* SpamCallDirectoryProvider.swift */; };
|
||||
0B8C5B12B08FCC49DDFF04BF /* WidgetDataService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 099FBF47526E8BF21E966CE7 /* WidgetDataService.swift */; };
|
||||
0BC0F2A49ED298F13546B7FC /* RuntimeIntegrityMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3417B93227126F6A1C2D9EA2 /* RuntimeIntegrityMonitor.swift */; };
|
||||
0E7940891C1793CF873D4868 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BF8FA2421DCB50CCB935AAF /* ContentView.swift */; };
|
||||
@@ -21,8 +23,10 @@
|
||||
11E59C678C049AFD7BF641E0 /* ShieldSkeleton.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8879D44550B998C5F398A4B /* ShieldSkeleton.swift */; };
|
||||
122ED189EBF8229F83623FA6 /* AuthView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E3D692FD8930AE9FD215F94 /* AuthView.swift */; };
|
||||
128A5CBFCD19ADD58A31EA95 /* ShieldButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0168364C5240254333D73309 /* ShieldButton.swift */; };
|
||||
12FCF275B23DB4C3D88AD68B /* SpamDirectoryService.swift in Sources */ = {isa = PBXBuildFile; fileRef = A0AE114ECE5737370C91254F /* SpamDirectoryService.swift */; };
|
||||
130296C3AF9E8A0DDA339F56 /* SiriShortcutsSettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A4916B1A6056C51B1811B5D /* SiriShortcutsSettingsView.swift */; };
|
||||
1854D1D7C37BC1CD6AB26789 /* SpamShieldViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7F80E971A83D602DBD219E1 /* SpamShieldViewModel.swift */; };
|
||||
1916B6C79434F0C14D4BAFF2 /* NotificationPayload.swift in Sources */ = {isa = PBXBuildFile; fileRef = A139D3CE61BAF43A3D0EDAC1 /* NotificationPayload.swift */; };
|
||||
1AFE96F2B86FA89205D26C3B /* GeneratedTokens.swift in Sources */ = {isa = PBXBuildFile; fileRef = 16B09B430E1799036EC2A14D /* GeneratedTokens.swift */; };
|
||||
20D5EC59E7294C64F52D783E /* PerformanceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A61D0FC4CA1F232BF92EB97 /* PerformanceTests.swift */; };
|
||||
237AA16FAA560C9B24C653E8 /* ImageOptimizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60E9C748D79113EB87E7488F /* ImageOptimizer.swift */; };
|
||||
@@ -30,6 +34,7 @@
|
||||
2C7CBD7D6350C1EDE9618F47 /* AsyncSemaphore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B92B0397F4DBE1F2F79DCF96 /* AsyncSemaphore.swift */; };
|
||||
30237C9ACBB19BBF11E5BF5A /* CorrelationGroup.swift in Sources */ = {isa = PBXBuildFile; fileRef = D322E6ED81B495C20AF6D286 /* CorrelationGroup.swift */; };
|
||||
30393A19EA56B29AFE5EC287 /* ServiceUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25E4A87DA1445195F86F5F9E /* ServiceUITests.swift */; };
|
||||
314EE1B9958D7EF6A96D4B96 /* OfflineSyncIndicatorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36CF18B7C7883AC8B8F7A154 /* OfflineSyncIndicatorView.swift */; };
|
||||
329BFA21EADEFFAAE65FE107 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 3F6DDE92B5CAE1D1A3967B48 /* PrivacyInfo.xcprivacy */; };
|
||||
334784A4E82E6997A4E4D9F9 /* CachedAsyncImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1D7E5D5569944BA693DE7445 /* CachedAsyncImage.swift */; };
|
||||
334FCC6664816603D623727D /* RouterViewModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9543EA4F86FA0D3A2CA8D44 /* RouterViewModifier.swift */; };
|
||||
@@ -46,7 +51,10 @@
|
||||
4CE059C0EBCF26DC9F6DE98A /* ImageCacheService.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF21A82DFB751EF5D096C679 /* ImageCacheService.swift */; };
|
||||
4D77D335E8B1D0275BE39DE0 /* RecordingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA25EAD8E08BC7C0F6BEDE3C /* RecordingView.swift */; };
|
||||
4DD64B5F38764DC65EAB6D48 /* UITestBase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44EBD3281327B1886C8EDADB /* UITestBase.swift */; };
|
||||
5031974ED25FFE8502979511 /* SpamDirectoryService.swift in Sources */ = {isa = PBXBuildFile; fileRef = A0AE114ECE5737370C91254F /* SpamDirectoryService.swift */; };
|
||||
54CB300169F70A0F257D6CDD /* AlertDetailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD2EF72F906CDD3D58E16828 /* AlertDetailView.swift */; };
|
||||
5917EF623DE2A73FAE88DA2C /* NotificationDeepLinkRouter.swift in Sources */ = {isa = PBXBuildFile; fileRef = A52A06B0A459A746C5622AB5 /* NotificationDeepLinkRouter.swift */; };
|
||||
5A514F99FBBF4F897218B5EA /* SpamDirectoryService.swift in Sources */ = {isa = PBXBuildFile; fileRef = A0AE114ECE5737370C91254F /* SpamDirectoryService.swift */; };
|
||||
5EBE3CBC76BBF09607FE457B /* Alert.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5A13541C5FEE7863C64D599C /* Alert.swift */; };
|
||||
6056333F6B35D641B14E96DF /* DarkWatchViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34197C0E38EF73428495140C /* DarkWatchViewModel.swift */; };
|
||||
60C9A40702B4E297DB56FD8E /* KordantWidgets.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9354C2A7EB89F886B7F372D /* KordantWidgets.swift */; };
|
||||
@@ -77,17 +85,21 @@
|
||||
8DE2D36385A729F612469FAD /* KordantApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E4AA9898BC43E43799C0A67 /* KordantApp.swift */; };
|
||||
8E56C234A4E5CA5239980215 /* OAuthService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 725A83CA651E353CC10C185A /* OAuthService.swift */; };
|
||||
96935519A0E04FF54B1A8095 /* SpamCheckResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 246059FF9A3924AA6AF476BA /* SpamCheckResult.swift */; };
|
||||
9CCAEC4C51D362393136D946 /* SpamDirectoryService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 573B6C8FEA0DEC492D964C29 /* SpamDirectoryService.swift */; };
|
||||
99FDA059B1AE985CBFE67865 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 38D5DF1F955EC2C303708941 /* PrivacyInfo.xcprivacy */; };
|
||||
9E4662CBF9CA05EC5E72EEC2 /* ATTExplanationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 110D65963A988A48171257F3 /* ATTExplanationView.swift */; };
|
||||
9F1BBA09F99BFA122CE4F25B /* SiriIntentsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79C899D0CE53C5AD2CC34B72 /* SiriIntentsTests.swift */; };
|
||||
A1D77AB578439B70433604BC /* ShieldToast.swift in Sources */ = {isa = PBXBuildFile; fileRef = 856911533BDD3778A4B73846 /* ShieldToast.swift */; };
|
||||
A2A7B622BE4A8E8D70F46DB0 /* BackupExclusionHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = C81B2029FDD789080FB8940E /* BackupExclusionHelper.swift */; };
|
||||
A4693DD9CE09C6CA0FCB1256 /* PermissionRationaleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C9F31D8ECA2B62ADBCCC615 /* PermissionRationaleView.swift */; };
|
||||
A4A544DDAA6F3FF2251C8E80 /* NotificationAnalytics.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23A155702BEE39B630103DB5 /* NotificationAnalytics.swift */; };
|
||||
A501AFBADC2B566D0AAE1F97 /* HomeTitleViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B71A19E97A49C6426A2BFE5 /* HomeTitleViewModel.swift */; };
|
||||
A542092128A5742C8F08B75F /* SpamManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = E77A46B8169F0D263D7B5E6F /* SpamManager.swift */; };
|
||||
A78CB9A2D7FCE7E300902124 /* KordantSpamShieldExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = A94EF21C88A991CB44E369C6 /* KordantSpamShieldExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
|
||||
A92637572BBEAB7CDCE7984D /* KordantTheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = 685D5954736827958709838A /* KordantTheme.swift */; };
|
||||
ABBEA6350C2FE39E6ADC7BD7 /* AccessibilityUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 901584399764E4CD82C6E772 /* AccessibilityUITests.swift */; };
|
||||
AE89BE63B9BF20AC6E7CB1C1 /* NotificationCategorySetup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 10FA77EC731869F53C308E86 /* NotificationCategorySetup.swift */; };
|
||||
B134908EB6E1B2A22A342B6A /* APIConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = F435F1BEC04CC550D17E1CB0 /* APIConfig.swift */; };
|
||||
B250543F7D97A8A1611F96DC /* InAppNotificationToast.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2119D9C08385625F0B538621 /* InAppNotificationToast.swift */; };
|
||||
B425B103BE2FED4331E5D548 /* Font+Kordant.swift in Sources */ = {isa = PBXBuildFile; fileRef = A86594A3E3A4455C1256F47A /* Font+Kordant.swift */; };
|
||||
B4DA7F1611A993C8955C20CC /* DashboardViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 003DE933B632AF367AA5DBD1 /* DashboardViewModel.swift */; };
|
||||
B61185F6593AB9B934FA61B9 /* SignupView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7D88222B0D4C1F92855F6DCA /* SignupView.swift */; };
|
||||
@@ -98,6 +110,7 @@
|
||||
BC9CE965049FF7E1253F3D78 /* KordantUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DEA46ED4CF63EC7B7AE7F520 /* KordantUITests.swift */; };
|
||||
BE7C9C231E0E8719713F246B /* CallRecord.swift in Sources */ = {isa = PBXBuildFile; fileRef = F62FD9311DD6F3F736B41D60 /* CallRecord.swift */; };
|
||||
BF34017850950495C5EE1C71 /* ThemeManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC0631E3D41BDAF51CF2AAF5 /* ThemeManager.swift */; };
|
||||
C359DA8839095077632360A9 /* WidgetDataManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1DD534A2FC01562EFBCB939C /* WidgetDataManager.swift */; };
|
||||
C3FDF1905BEC85F54FBB273F /* RealAPIClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5AEEF3CBC3CACCC06C264F35 /* RealAPIClient.swift */; };
|
||||
C4B21A47C24F7651744883B1 /* SecureDeletionHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9256C4683E4235524FE72256 /* SecureDeletionHelper.swift */; };
|
||||
C56E5C4C1AC5D5931E2B4EF5 /* BackgroundSyncService.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFEE53055D59239A73A065E2 /* BackgroundSyncService.swift */; };
|
||||
@@ -116,9 +129,11 @@
|
||||
D4E432BB48D5B50497C790B2 /* RemoveBrokersViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 082F9D4188955A76ACA058E8 /* RemoveBrokersViewModel.swift */; };
|
||||
D4F0DA984B8BE2D0FC880D01 /* CallRecorderService.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF48DCC2B7B0F0CAC8BBAE74 /* CallRecorderService.swift */; };
|
||||
D685EEBC2AAAC924FE189E2F /* GoogleSignIn in Frameworks */ = {isa = PBXBuildFile; productRef = 16093514F70C1B74662B4E7D /* GoogleSignIn */; };
|
||||
D7405F277595F09A8B0A80E8 /* WidgetData.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1B49E06ABB132569A2929F5 /* WidgetData.swift */; };
|
||||
D77B0279CC4DEA65D78774B3 /* KordantTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5DFF392EA85EC0ABFDBE8EDC /* KordantTests.swift */; };
|
||||
D872EDBCCDDD75B74981304F /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 257D456D03BCC0D65116E408 /* InfoPlist.strings */; };
|
||||
D8DC68820BD2F1AF87831F02 /* ForgotPasswordView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD5F5B704743A1114917E9CA /* ForgotPasswordView.swift */; };
|
||||
D8FFD42ADB788ABDE7F9A059 /* OfflineSyncCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6FE80C2C35AF8F3D5C4F92CF /* OfflineSyncCoordinator.swift */; };
|
||||
DA24967F1575F1213D9C93DF /* User.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80E646539484A03978722A4B /* User.swift */; };
|
||||
DD378507D956BE3FC301D869 /* SyncStatusManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 739AFCD0C8144544F3FE6469 /* SyncStatusManager.swift */; };
|
||||
DD6438D07516BC916EEE0DA6 /* PaginatedListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 15841F893EE2A497DA44F373 /* PaginatedListView.swift */; };
|
||||
@@ -165,6 +180,13 @@
|
||||
remoteGlobalIDString = E7AC16B355315CFFD65E4690;
|
||||
remoteInfo = Kordant;
|
||||
};
|
||||
6440A76CE512B642ACB9EEBF /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 2E437B8CEA345DCDDDC7A55C /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 9F565239D0F660D3DBD9FB02;
|
||||
remoteInfo = KordantSpamShieldExtension;
|
||||
};
|
||||
C76ED043EA3A601844422819 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 2E437B8CEA345DCDDDC7A55C /* Project object */;
|
||||
@@ -182,6 +204,7 @@
|
||||
dstSubfolderSpec = 13;
|
||||
files = (
|
||||
38E861C460A63FC5BD6A3134 /* KordantWidgets.appex in Embed Foundation Extensions */,
|
||||
A78CB9A2D7FCE7E300902124 /* KordantSpamShieldExtension.appex in Embed Foundation Extensions */,
|
||||
);
|
||||
name = "Embed Foundation Extensions";
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
@@ -200,6 +223,7 @@
|
||||
0F9F5421FCCD3F646413187A /* AuthService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthService.swift; sourceTree = "<group>"; };
|
||||
10A6E6DE5E217E6200B4825F /* LaunchTimeTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LaunchTimeTests.swift; sourceTree = "<group>"; };
|
||||
10B2DC7DBC66BC853238865B /* Subscription.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Subscription.swift; sourceTree = "<group>"; };
|
||||
10FA77EC731869F53C308E86 /* NotificationCategorySetup.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationCategorySetup.swift; sourceTree = "<group>"; };
|
||||
110D65963A988A48171257F3 /* ATTExplanationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ATTExplanationView.swift; sourceTree = "<group>"; };
|
||||
140490443DB9EB9F7D363E53 /* KordantUITests.xctest */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.cfbundle; path = KordantUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
1499B238F3D74C236F8F77FB /* PasswordStrengthIndicator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PasswordStrengthIndicator.swift; sourceTree = "<group>"; };
|
||||
@@ -214,7 +238,9 @@
|
||||
1DF6AEB8F48713431EFAEF6D /* CallAudioUploader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CallAudioUploader.swift; sourceTree = "<group>"; };
|
||||
1F6FC70464176DE898757054 /* WidgetConfigurationIntent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WidgetConfigurationIntent.swift; sourceTree = "<group>"; };
|
||||
1F8DD0070FEC6A828834BF9C /* Kordant.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = Kordant.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
2119D9C08385625F0B538621 /* InAppNotificationToast.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InAppNotificationToast.swift; sourceTree = "<group>"; };
|
||||
22B83C8996480119885C6228 /* BiometricAuthView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BiometricAuthView.swift; sourceTree = "<group>"; };
|
||||
23A155702BEE39B630103DB5 /* NotificationAnalytics.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationAnalytics.swift; sourceTree = "<group>"; };
|
||||
246059FF9A3924AA6AF476BA /* SpamCheckResult.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SpamCheckResult.swift; sourceTree = "<group>"; };
|
||||
25E4A87DA1445195F86F5F9E /* ServiceUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ServiceUITests.swift; sourceTree = "<group>"; };
|
||||
27DCF406261C37F0595D837F /* WidgetDataTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WidgetDataTests.swift; sourceTree = "<group>"; };
|
||||
@@ -224,7 +250,9 @@
|
||||
327478ACB90550ED16D2C296 /* VoiceEnrollment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VoiceEnrollment.swift; sourceTree = "<group>"; };
|
||||
3417B93227126F6A1C2D9EA2 /* RuntimeIntegrityMonitor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RuntimeIntegrityMonitor.swift; sourceTree = "<group>"; };
|
||||
34197C0E38EF73428495140C /* DarkWatchViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DarkWatchViewModel.swift; sourceTree = "<group>"; };
|
||||
36CF18B7C7883AC8B8F7A154 /* OfflineSyncIndicatorView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OfflineSyncIndicatorView.swift; sourceTree = "<group>"; };
|
||||
378B61C35CD27D4CC2694775 /* ATTService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ATTService.swift; sourceTree = "<group>"; };
|
||||
38D5DF1F955EC2C303708941 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; path = PrivacyInfo.xcprivacy; sourceTree = "<group>"; };
|
||||
3E4AA9898BC43E43799C0A67 /* KordantApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KordantApp.swift; sourceTree = "<group>"; };
|
||||
3F650DB141286EECD71BB625 /* ShieldModal.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShieldModal.swift; sourceTree = "<group>"; };
|
||||
3F6DDE92B5CAE1D1A3967B48 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; path = PrivacyInfo.xcprivacy; sourceTree = "<group>"; };
|
||||
@@ -241,7 +269,6 @@
|
||||
5076AF44C95047605F618ABE /* VoicePrintView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VoicePrintView.swift; sourceTree = "<group>"; };
|
||||
558639B2292EEABA5CCE6235 /* SecurityReport.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecurityReport.swift; sourceTree = "<group>"; };
|
||||
56F7D2D535128DC4809DA0D9 /* OnboardingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingView.swift; sourceTree = "<group>"; };
|
||||
573B6C8FEA0DEC492D964C29 /* SpamDirectoryService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SpamDirectoryService.swift; sourceTree = "<group>"; };
|
||||
5761F5A414BADE57FD401029 /* BrokerListing.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BrokerListing.swift; sourceTree = "<group>"; };
|
||||
58D35F834EEDDCE37AB9C963 /* IntentDonationManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IntentDonationManager.swift; sourceTree = "<group>"; };
|
||||
5A13541C5FEE7863C64D599C /* Alert.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Alert.swift; sourceTree = "<group>"; };
|
||||
@@ -254,6 +281,7 @@
|
||||
685D5954736827958709838A /* KordantTheme.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KordantTheme.swift; sourceTree = "<group>"; };
|
||||
687607CB3AC45DB5EA37F3F5 /* AlertDetailViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlertDetailViewModel.swift; sourceTree = "<group>"; };
|
||||
6CB5D97835596EB7B30F6E44 /* BackgroundSyncTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BackgroundSyncTests.swift; sourceTree = "<group>"; };
|
||||
6FE80C2C35AF8F3D5C4F92CF /* OfflineSyncCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OfflineSyncCoordinator.swift; sourceTree = "<group>"; };
|
||||
70BB01248D23EB84327D592B /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
||||
71435B616BFA2BCE7B29AA76 /* AnalyticsServiceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnalyticsServiceTests.swift; sourceTree = "<group>"; };
|
||||
72296A4EB5D36DD9D92B4B90 /* KordantIntents.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KordantIntents.swift; sourceTree = "<group>"; };
|
||||
@@ -285,13 +313,18 @@
|
||||
9B90CEEA15CB154FC65A6615 /* ImageUploadQueue.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageUploadQueue.swift; sourceTree = "<group>"; };
|
||||
9BF8FA2421DCB50CCB935AAF /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = "<group>"; };
|
||||
9C9F31D8ECA2B62ADBCCC615 /* PermissionRationaleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PermissionRationaleView.swift; sourceTree = "<group>"; };
|
||||
A0AE114ECE5737370C91254F /* SpamDirectoryService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SpamDirectoryService.swift; sourceTree = "<group>"; };
|
||||
A139D3CE61BAF43A3D0EDAC1 /* NotificationPayload.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationPayload.swift; sourceTree = "<group>"; };
|
||||
A1B49E06ABB132569A2929F5 /* WidgetData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WidgetData.swift; sourceTree = "<group>"; };
|
||||
A36F6A869103B6471AD2A101 /* NotificationPreferencesView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationPreferencesView.swift; sourceTree = "<group>"; };
|
||||
A4C8761BC8D3E21E1E4C0CC9 /* TestingMode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestingMode.swift; sourceTree = "<group>"; };
|
||||
A52A06B0A459A746C5622AB5 /* NotificationDeepLinkRouter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationDeepLinkRouter.swift; sourceTree = "<group>"; };
|
||||
A5DA0E3C16C85A43D852D7EC /* NetworkMonitor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkMonitor.swift; sourceTree = "<group>"; };
|
||||
A803E6550DCC450B9514869D /* Route.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Route.swift; sourceTree = "<group>"; };
|
||||
A86594A3E3A4455C1256F47A /* Font+Kordant.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Font+Kordant.swift"; sourceTree = "<group>"; };
|
||||
A8B538F45BCCAED040FB3868 /* BiometricAuthService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BiometricAuthService.swift; sourceTree = "<group>"; };
|
||||
A8C8050709A87EBDECD50370 /* AppRouter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppRouter.swift; sourceTree = "<group>"; };
|
||||
A94EF21C88A991CB44E369C6 /* KordantSpamShieldExtension.appex */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = "wrapper.app-extension"; path = KordantSpamShieldExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
ABE6B7AB5D57F3DB3213B9C1 /* DataProtectionService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DataProtectionService.swift; sourceTree = "<group>"; };
|
||||
AD2EF72F906CDD3D58E16828 /* AlertDetailView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlertDetailView.swift; sourceTree = "<group>"; };
|
||||
B16D0950817A89C822AC0E8D /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; path = PrivacyInfo.xcprivacy; sourceTree = "<group>"; };
|
||||
@@ -324,6 +357,7 @@
|
||||
E9C881BF26E1CF77F2F9B5F7 /* UnitPerformanceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UnitPerformanceTests.swift; sourceTree = "<group>"; };
|
||||
EC0C3869BD4FCBAD6E833BCC /* SyntheticVoiceAlertView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyntheticVoiceAlertView.swift; sourceTree = "<group>"; };
|
||||
EC3CE0217F0D056053D854E3 /* OfflineQueue.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OfflineQueue.swift; sourceTree = "<group>"; };
|
||||
EE1943ECCB09C6BB3432C808 /* SpamCallDirectoryProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SpamCallDirectoryProvider.swift; sourceTree = "<group>"; };
|
||||
EECD59F49466CDE16D57985C /* WidgetViews.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WidgetViews.swift; sourceTree = "<group>"; };
|
||||
F435F1BEC04CC550D17E1CB0 /* APIConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIConfig.swift; sourceTree = "<group>"; };
|
||||
F62FD9311DD6F3F736B41D60 /* CallRecord.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CallRecord.swift; sourceTree = "<group>"; };
|
||||
@@ -346,6 +380,19 @@
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
0346F1A441DE1F8958A951E1 /* Notification */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
2119D9C08385625F0B538621 /* InAppNotificationToast.swift */,
|
||||
23A155702BEE39B630103DB5 /* NotificationAnalytics.swift */,
|
||||
10FA77EC731869F53C308E86 /* NotificationCategorySetup.swift */,
|
||||
A52A06B0A459A746C5622AB5 /* NotificationDeepLinkRouter.swift */,
|
||||
A139D3CE61BAF43A3D0EDAC1 /* NotificationPayload.swift */,
|
||||
A36F6A869103B6471AD2A101 /* NotificationPreferencesView.swift */,
|
||||
);
|
||||
path = Notification;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
03CDA6D8C21F3B242A4D5222 /* Services */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@@ -371,9 +418,9 @@
|
||||
A5DA0E3C16C85A43D852D7EC /* NetworkMonitor.swift */,
|
||||
725A83CA651E353CC10C185A /* OAuthService.swift */,
|
||||
EC3CE0217F0D056053D854E3 /* OfflineQueue.swift */,
|
||||
6FE80C2C35AF8F3D5C4F92CF /* OfflineSyncCoordinator.swift */,
|
||||
0C5E19CFD1C5DF1550ADB1E8 /* PushNotificationService.swift */,
|
||||
5AEEF3CBC3CACCC06C264F35 /* RealAPIClient.swift */,
|
||||
573B6C8FEA0DEC492D964C29 /* SpamDirectoryService.swift */,
|
||||
739AFCD0C8144544F3FE6469 /* SyncStatusManager.swift */,
|
||||
A4C8761BC8D3E21E1E4C0CC9 /* TestingMode.swift */,
|
||||
62763E6E8E89624887F90E47 /* TRPCBridge.swift */,
|
||||
@@ -399,6 +446,7 @@
|
||||
1204463B7B9EAF89D8D0F497 /* Shared */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
A0AE114ECE5737370C91254F /* SpamDirectoryService.swift */,
|
||||
A1B49E06ABB132569A2929F5 /* WidgetData.swift */,
|
||||
1DD534A2FC01562EFBCB939C /* WidgetDataManager.swift */,
|
||||
);
|
||||
@@ -449,6 +497,7 @@
|
||||
1E12010DC9D39CC2D83DAC2D /* Intents */,
|
||||
1EBF0E1E75884BE9F880FF04 /* Models */,
|
||||
3EDCDB5940B98BB1A46E4875 /* Navigation */,
|
||||
0346F1A441DE1F8958A951E1 /* Notification */,
|
||||
03CDA6D8C21F3B242A4D5222 /* Services */,
|
||||
AC91D804E81B7AC459C97E8D /* Theme */,
|
||||
8E0E7F54D15193114FF241DE /* ViewModels */,
|
||||
@@ -457,6 +506,15 @@
|
||||
path = Kordant;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
219717BC1DF900BCA048F6DA /* KordantSpamShieldExtension */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
38D5DF1F955EC2C303708941 /* PrivacyInfo.xcprivacy */,
|
||||
EE1943ECCB09C6BB3432C808 /* SpamCallDirectoryProvider.swift */,
|
||||
);
|
||||
path = KordantSpamShieldExtension;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
3B63ECD8843D21AB607B74DD /* KordantUITests */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@@ -554,6 +612,7 @@
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1F8751A476FBCD23C68BD0C5 /* Kordant */,
|
||||
219717BC1DF900BCA048F6DA /* KordantSpamShieldExtension */,
|
||||
FA4637DE84D0943566A26681 /* KordantTests */,
|
||||
3B63ECD8843D21AB607B74DD /* KordantUITests */,
|
||||
86C38B19E615C393E7F4D2F3 /* KordantWidgets */,
|
||||
@@ -590,6 +649,7 @@
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1F8DD0070FEC6A828834BF9C /* Kordant.app */,
|
||||
A94EF21C88A991CB44E369C6 /* KordantSpamShieldExtension.appex */,
|
||||
478A94508A02D7E028AAAAED /* KordantTests.xctest */,
|
||||
140490443DB9EB9F7D363E53 /* KordantUITests.xctest */,
|
||||
1550C2D8DAC3644E57EE2293 /* KordantWidgets.appex */,
|
||||
@@ -629,6 +689,7 @@
|
||||
E88037380DBA2ACC0629591A /* Views */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
36CF18B7C7883AC8B8F7A154 /* OfflineSyncIndicatorView.swift */,
|
||||
096E608FDA6CC18CF5B337D8 /* Auth */,
|
||||
A7ED5975BAD96BF2B8A05403 /* Common */,
|
||||
DF928A161C46F95B59CFA25E /* Dashboard */,
|
||||
@@ -691,6 +752,24 @@
|
||||
productReference = 1550C2D8DAC3644E57EE2293 /* KordantWidgets.appex */;
|
||||
productType = "com.apple.product-type.app-extension";
|
||||
};
|
||||
9F565239D0F660D3DBD9FB02 /* KordantSpamShieldExtension */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 83FB107C5B6151AC73EF6D20 /* Build configuration list for PBXNativeTarget "KordantSpamShieldExtension" */;
|
||||
buildPhases = (
|
||||
B43464E2451C582AA49AA1FF /* Sources */,
|
||||
FBB9A3C3E46D8FF4FC795548 /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = KordantSpamShieldExtension;
|
||||
packageProductDependencies = (
|
||||
);
|
||||
productName = KordantSpamShieldExtension;
|
||||
productReference = A94EF21C88A991CB44E369C6 /* KordantSpamShieldExtension.appex */;
|
||||
productType = "com.apple.product-type.app-extension";
|
||||
};
|
||||
AE634633B8F1B514E185CE5F /* KordantUITests */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = E43AB61672FA9B9618409C9E /* Build configuration list for PBXNativeTarget "KordantUITests" */;
|
||||
@@ -741,6 +820,7 @@
|
||||
);
|
||||
dependencies = (
|
||||
5242B4AE13AE897802CE47CC /* PBXTargetDependency */,
|
||||
20091D29830EA70CF8165366 /* PBXTargetDependency */,
|
||||
);
|
||||
name = Kordant;
|
||||
packageProductDependencies = (
|
||||
@@ -788,6 +868,7 @@
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
E7AC16B355315CFFD65E4690 /* Kordant */,
|
||||
9F565239D0F660D3DBD9FB02 /* KordantSpamShieldExtension */,
|
||||
B5C503572F0C73442B35B031 /* KordantTests */,
|
||||
AE634633B8F1B514E185CE5F /* KordantUITests */,
|
||||
18C82F154D370268489AA37B /* KordantWidgets */,
|
||||
@@ -813,6 +894,14 @@
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
FBB9A3C3E46D8FF4FC795548 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
99FDA059B1AE985CBFE67865 /* PrivacyInfo.xcprivacy in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXShellScriptBuildPhase section */
|
||||
@@ -874,6 +963,7 @@
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
60C9A40702B4E297DB56FD8E /* KordantWidgets.swift in Sources */,
|
||||
5031974ED25FFE8502979511 /* SpamDirectoryService.swift in Sources */,
|
||||
03EDDBE4B03B2DBAE1C60E97 /* WidgetColors.swift in Sources */,
|
||||
775C86F6FB27B032A60E8FCF /* WidgetConfigurationIntent.swift in Sources */,
|
||||
D15C3A932B6C3F0E97252762 /* WidgetData.swift in Sources */,
|
||||
@@ -882,6 +972,17 @@
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
B43464E2451C582AA49AA1FF /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
08157C9830FC256DDA223AED /* SpamCallDirectoryProvider.swift in Sources */,
|
||||
5A514F99FBBF4F897218B5EA /* SpamDirectoryService.swift in Sources */,
|
||||
D7405F277595F09A8B0A80E8 /* WidgetData.swift in Sources */,
|
||||
C359DA8839095077632360A9 /* WidgetDataManager.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
DB719E2D70357E9C469E3791 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
@@ -930,6 +1031,7 @@
|
||||
4CE059C0EBCF26DC9F6DE98A /* ImageCacheService.swift in Sources */,
|
||||
237AA16FAA560C9B24C653E8 /* ImageOptimizer.swift in Sources */,
|
||||
82D35FA68B5CE9ACC7292BF5 /* ImageUploadQueue.swift in Sources */,
|
||||
B250543F7D97A8A1611F96DC /* InAppNotificationToast.swift in Sources */,
|
||||
435E90F8948C006289F68B50 /* IntentDonationManager.swift in Sources */,
|
||||
021629A9E3536863F6E842C0 /* JailbreakDetector.swift in Sources */,
|
||||
CEAB3134A5054A8147770FED /* KeychainService.swift in Sources */,
|
||||
@@ -940,9 +1042,16 @@
|
||||
F8473F888D3EF127ECE844E7 /* LoginView.swift in Sources */,
|
||||
775D6C83D9112AB8E6BDA1C9 /* NetworkMonitor.swift in Sources */,
|
||||
103F801528D0EBD495FC102E /* NormalizedAlert.swift in Sources */,
|
||||
A4A544DDAA6F3FF2251C8E80 /* NotificationAnalytics.swift in Sources */,
|
||||
AE89BE63B9BF20AC6E7CB1C1 /* NotificationCategorySetup.swift in Sources */,
|
||||
5917EF623DE2A73FAE88DA2C /* NotificationDeepLinkRouter.swift in Sources */,
|
||||
1916B6C79434F0C14D4BAFF2 /* NotificationPayload.swift in Sources */,
|
||||
07A3D6B7C5DE6BCC7FA745F3 /* NotificationPreferencesView.swift in Sources */,
|
||||
8E56C234A4E5CA5239980215 /* OAuthService.swift in Sources */,
|
||||
71E9E16601552A45373E5E09 /* ObfuscatedString.swift in Sources */,
|
||||
F3BCC62E4D2B094CBBD1DAED /* OfflineQueue.swift in Sources */,
|
||||
D8FFD42ADB788ABDE7F9A059 /* OfflineSyncCoordinator.swift in Sources */,
|
||||
314EE1B9958D7EF6A96D4B96 /* OfflineSyncIndicatorView.swift in Sources */,
|
||||
D192C92B86B2F07F179B4598 /* OnboardingView.swift in Sources */,
|
||||
DD6438D07516BC916EEE0DA6 /* PaginatedListView.swift in Sources */,
|
||||
C679FA0D475C28010A444CB0 /* PasswordStrengthIndicator.swift in Sources */,
|
||||
@@ -976,7 +1085,7 @@
|
||||
B61185F6593AB9B934FA61B9 /* SignupView.swift in Sources */,
|
||||
130296C3AF9E8A0DDA339F56 /* SiriShortcutsSettingsView.swift in Sources */,
|
||||
96935519A0E04FF54B1A8095 /* SpamCheckResult.swift in Sources */,
|
||||
9CCAEC4C51D362393136D946 /* SpamDirectoryService.swift in Sources */,
|
||||
12FCF275B23DB4C3D88AD68B /* SpamDirectoryService.swift in Sources */,
|
||||
A542092128A5742C8F08B75F /* SpamManager.swift in Sources */,
|
||||
DECFE253A2ED12A475AA1799 /* SpamRule.swift in Sources */,
|
||||
71D7CA475ABB61E4E8A2C1D3 /* SpamSettingsView.swift in Sources */,
|
||||
@@ -1003,6 +1112,11 @@
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
20091D29830EA70CF8165366 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = 9F565239D0F660D3DBD9FB02 /* KordantSpamShieldExtension */;
|
||||
targetProxy = 6440A76CE512B642ACB9EEBF /* PBXContainerItemProxy */;
|
||||
};
|
||||
27D92BC556A061277B7E39B6 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = E7AC16B355315CFFD65E4690 /* Kordant */;
|
||||
@@ -1206,6 +1320,26 @@
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
BFE36754FC50CEAD90C478F3 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CODE_SIGN_ENTITLEMENTS = KordantSpamShieldExtension/KordantSpamShieldExtension.entitlements;
|
||||
INFOPLIST_FILE = KordantSpamShieldExtension/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 17.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
"@executable_path/../../Frameworks",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.frenocorp.kordant.spamshield;
|
||||
PRODUCT_NAME = KordantSpamShieldExtension;
|
||||
SDKROOT = iphoneos;
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_VERSION = 5.9;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
E5C1AA9DD51A7B94BF82ACDF /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
@@ -1225,6 +1359,26 @@
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
F1105AC6E8DCEAD8C5333DAC /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CODE_SIGN_ENTITLEMENTS = KordantSpamShieldExtension/KordantSpamShieldExtension.entitlements;
|
||||
INFOPLIST_FILE = KordantSpamShieldExtension/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 17.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
"@executable_path/../../Frameworks",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.frenocorp.kordant.spamshield;
|
||||
PRODUCT_NAME = KordantSpamShieldExtension;
|
||||
SDKROOT = iphoneos;
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_VERSION = 5.9;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
F3E1B0FF46C128FD7B80B85E /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
@@ -1343,6 +1497,15 @@
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Debug;
|
||||
};
|
||||
83FB107C5B6151AC73EF6D20 /* Build configuration list for PBXNativeTarget "KordantSpamShieldExtension" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
BFE36754FC50CEAD90C478F3 /* Debug */,
|
||||
F1105AC6E8DCEAD8C5333DAC /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Debug;
|
||||
};
|
||||
842F3DA4914A2DD34BE9E37E /* Build configuration list for PBXNativeTarget "KordantWidgets" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
|
||||
@@ -21,6 +21,20 @@
|
||||
ReferencedContainer = "container:Kordant.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "9F565239D0F660D3DBD9FB02"
|
||||
BuildableName = "KordantSpamShieldExtension.appex"
|
||||
BlueprintName = "KordantSpamShieldExtension"
|
||||
ReferencedContainer = "container:Kordant.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "NO"
|
||||
|
||||
Reference in New Issue
Block a user