Skip to content

Commit 4d09ac4

Browse files
Merge pull request #432 from Iterable/feature/mob-2445-online-offline
[MOB-2445] - Certain calls are online only
2 parents fddfc95 + 42f5d7c commit 4d09ac4

10 files changed

+722
-438
lines changed

swift-sdk.xcodeproj/project.pbxproj

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@
8787
AC50865824C60426001DC132 /* IterableTask.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC50865724C60426001DC132 /* IterableTask.swift */; };
8888
AC50865A24C60572001DC132 /* IterableCoreDataPersistence.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC50865924C60572001DC132 /* IterableCoreDataPersistence.swift */; };
8989
AC5812F624F3A90F007E6D36 /* OfflineRequestProcessor.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC5812F524F3A90F007E6D36 /* OfflineRequestProcessor.swift */; };
90-
AC5812F824F3AE8D007E6D36 /* RequestProcessor.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC5812F724F3AE8D007E6D36 /* RequestProcessor.swift */; };
90+
AC5812F824F3AE8D007E6D36 /* RequestHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC5812F724F3AE8D007E6D36 /* RequestHandler.swift */; };
9191
AC5E888924E1B7CE00752321 /* OnlineRequestProcessor.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC5E888824E1B7CE00752321 /* OnlineRequestProcessor.swift */; };
9292
AC64626B2140AACF0046E1BD /* IterableAPIResponseTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC64626A2140AACF0046E1BD /* IterableAPIResponseTests.swift */; };
9393
AC67AF982507481200C1E974 /* NetworkConnectivityCheckerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC67AF972507481200C1E974 /* NetworkConnectivityCheckerTests.swift */; };
@@ -139,6 +139,8 @@
139139
AC8F35A2239806B500302994 /* InboxViewControllerViewModelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC8F35A1239806B500302994 /* InboxViewControllerViewModelTests.swift */; };
140140
AC90C4CD20D8632E00EECA5D /* IterableAppExtensions.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AC90C4C420D8632D00EECA5D /* IterableAppExtensions.framework */; };
141141
AC90C4E220D8639E00EECA5D /* ITBNotificationServiceExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC90C4E120D8639E00EECA5D /* ITBNotificationServiceExtension.swift */; };
142+
AC9355D12589F9F90056C903 /* RequestHandlerProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC9355D02589F9F90056C903 /* RequestHandlerProtocol.swift */; };
143+
AC9355DB2589FC070056C903 /* LegacyRequestHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC9355DA2589FC070056C903 /* LegacyRequestHandler.swift */; };
142144
AC942BC62539DEDA002988C9 /* ResourceHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC942BC52539DEDA002988C9 /* ResourceHelper.swift */; };
143145
AC978D3E24FF953C00372B8C /* NetworkConnectivityChecker.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC978D3D24FF953C00372B8C /* NetworkConnectivityChecker.swift */; };
144146
AC995F992166EE490099A184 /* CommonMocks.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC995F942166EC880099A184 /* CommonMocks.swift */; };
@@ -183,7 +185,7 @@
183185
ACC87766215C20B50097E29B /* UITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = ACC87765215C20B50097E29B /* UITests.swift */; };
184186
ACC8776D215C23CC0097E29B /* IterableSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AC2263DF20CF49B8009800EB /* IterableSDK.framework */; };
185187
ACC8776E215C23CC0097E29B /* IterableSDK.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = AC2263DF20CF49B8009800EB /* IterableSDK.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
186-
ACCF274C24F40C85004862D5 /* RequestProcessorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = ACCF274B24F40C85004862D5 /* RequestProcessorTests.swift */; };
188+
ACCF274C24F40C85004862D5 /* RequestHandlerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = ACCF274B24F40C85004862D5 /* RequestHandlerTests.swift */; };
187189
ACD6116C2107D004003E7F6B /* NetworkHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = ACD6116B2107D004003E7F6B /* NetworkHelper.swift */; };
188190
ACD6116E21080564003E7F6B /* IterableAPITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = ACD6116D21080564003E7F6B /* IterableAPITests.swift */; };
189191
ACDA975C23159C37004C412E /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = ACDA975B23159C37004C412E /* AppDelegate.swift */; };
@@ -431,7 +433,7 @@
431433
AC50865724C60426001DC132 /* IterableTask.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IterableTask.swift; sourceTree = "<group>"; };
432434
AC50865924C60572001DC132 /* IterableCoreDataPersistence.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IterableCoreDataPersistence.swift; sourceTree = "<group>"; };
433435
AC5812F524F3A90F007E6D36 /* OfflineRequestProcessor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OfflineRequestProcessor.swift; sourceTree = "<group>"; };
434-
AC5812F724F3AE8D007E6D36 /* RequestProcessor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RequestProcessor.swift; sourceTree = "<group>"; };
436+
AC5812F724F3AE8D007E6D36 /* RequestHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RequestHandler.swift; sourceTree = "<group>"; };
435437
AC5E888824E1B7CE00752321 /* OnlineRequestProcessor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnlineRequestProcessor.swift; sourceTree = "<group>"; };
436438
AC64626A2140AACF0046E1BD /* IterableAPIResponseTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IterableAPIResponseTests.swift; sourceTree = "<group>"; };
437439
AC67AF972507481200C1E974 /* NetworkConnectivityCheckerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkConnectivityCheckerTests.swift; sourceTree = "<group>"; };
@@ -485,6 +487,8 @@
485487
AC90C4CC20D8632E00EECA5D /* notification-extension-tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "notification-extension-tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
486488
AC90C4D520D8632E00EECA5D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
487489
AC90C4E120D8639E00EECA5D /* ITBNotificationServiceExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ITBNotificationServiceExtension.swift; sourceTree = "<group>"; };
490+
AC9355D02589F9F90056C903 /* RequestHandlerProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RequestHandlerProtocol.swift; sourceTree = "<group>"; };
491+
AC9355DA2589FC070056C903 /* LegacyRequestHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LegacyRequestHandler.swift; sourceTree = "<group>"; };
488492
AC942BC52539DEDA002988C9 /* ResourceHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ResourceHelper.swift; sourceTree = "<group>"; };
489493
AC978D3D24FF953C00372B8C /* NetworkConnectivityChecker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkConnectivityChecker.swift; sourceTree = "<group>"; };
490494
AC98294A20D9D65E00796DAA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
@@ -516,7 +520,7 @@
516520
ACC87763215C20B50097E29B /* ui-tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "ui-tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
517521
ACC87765215C20B50097E29B /* UITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UITests.swift; sourceTree = "<group>"; };
518522
ACC87767215C20B50097E29B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
519-
ACCF274B24F40C85004862D5 /* RequestProcessorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RequestProcessorTests.swift; sourceTree = "<group>"; };
523+
ACCF274B24F40C85004862D5 /* RequestHandlerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RequestHandlerTests.swift; sourceTree = "<group>"; };
520524
ACD6116B2107D004003E7F6B /* NetworkHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkHelper.swift; sourceTree = "<group>"; };
521525
ACD6116D21080564003E7F6B /* IterableAPITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IterableAPITests.swift; sourceTree = "<group>"; };
522526
ACDA975923159C36004C412E /* inbox-ui-tests-app.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "inbox-ui-tests-app.app"; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -879,8 +883,10 @@
879883
ACF32BDA24E3EA7C0072E2CC /* RequestProcessorProtocol.swift */,
880884
AC5E888824E1B7CE00752321 /* OnlineRequestProcessor.swift */,
881885
AC5812F524F3A90F007E6D36 /* OfflineRequestProcessor.swift */,
882-
AC5812F724F3AE8D007E6D36 /* RequestProcessor.swift */,
883886
AC3A336C24F65579008225BA /* RequestProcessorUtil.swift */,
887+
AC9355D02589F9F90056C903 /* RequestHandlerProtocol.swift */,
888+
AC5812F724F3AE8D007E6D36 /* RequestHandler.swift */,
889+
AC9355DA2589FC070056C903 /* LegacyRequestHandler.swift */,
884890
);
885891
name = "Request Processing";
886892
sourceTree = "<group>";
@@ -1181,7 +1187,7 @@
11811187
ACFD5AC524C8216A008E497A /* TasksCRUDTests.swift */,
11821188
ACC362C424D2C190002C67BA /* TaskProcessorTests.swift */,
11831189
AC2AED4124EBC60C000EE5F3 /* TaskRunnerTests.swift */,
1184-
ACCF274B24F40C85004862D5 /* RequestProcessorTests.swift */,
1190+
ACCF274B24F40C85004862D5 /* RequestHandlerTests.swift */,
11851191
AC67AF972507481200C1E974 /* NetworkConnectivityCheckerTests.swift */,
11861192
ACF406242507F90F005FD775 /* NetworkConnectivityManagerTests.swift */,
11871193
AC3EFFEF2510B8FB007F1330 /* TaskSchedulerTests.swift */,
@@ -1642,7 +1648,9 @@
16421648
AC3DD9C82142F3650046F886 /* ClassExtensions.swift in Sources */,
16431649
AC219C50225FEDBD00B98631 /* IterableInboxCell.swift in Sources */,
16441650
ACE6888D2228B86C00A95E5E /* InAppInternal.swift in Sources */,
1651+
AC9355D12589F9F90056C903 /* RequestHandlerProtocol.swift in Sources */,
16451652
AC1AA1C924EBB3C300F29C6B /* IterableNotifications.swift in Sources */,
1653+
AC9355DB2589FC070056C903 /* LegacyRequestHandler.swift in Sources */,
16461654
ACFD5AB324C8179D008E497A /* PersistenceHelper.swift in Sources */,
16471655
AC72A0CD20CF4CE2004D7997 /* IterableAppIntegration.swift in Sources */,
16481656
AC72A0CE20CF4CE2004D7997 /* IterableAttributionInfo.swift in Sources */,
@@ -1675,7 +1683,7 @@
16751683
AC819186227139230014955E /* SectionedValues.swift in Sources */,
16761684
AC6FDD8820F4372E005D811E /* IterableAPI.swift in Sources */,
16771685
ACF560E820E55A6B000AAC23 /* IterableActionContext.swift in Sources */,
1678-
AC5812F824F3AE8D007E6D36 /* RequestProcessor.swift in Sources */,
1686+
AC5812F824F3AE8D007E6D36 /* RequestHandler.swift in Sources */,
16791687
AC2C668220D32F2800D46CC9 /* IterableAppIntegrationInternal.swift in Sources */,
16801688
AC1BED9523F1D4C700FDD75F /* MiscInboxClasses.swift in Sources */,
16811689
556FB1EA244FAF6A00EDF6BD /* InAppPresenter.swift in Sources */,
@@ -1872,7 +1880,7 @@
18721880
ACFD5AC624C8216A008E497A /* TasksCRUDTests.swift in Sources */,
18731881
ACC362C624D2C334002C67BA /* CommonExtensions.swift in Sources */,
18741882
ACF406252507F90F005FD775 /* NetworkConnectivityManagerTests.swift in Sources */,
1875-
ACCF274C24F40C85004862D5 /* RequestProcessorTests.swift in Sources */,
1883+
ACCF274C24F40C85004862D5 /* RequestHandlerTests.swift in Sources */,
18761884
ACC362C724D2C647002C67BA /* CommonMocks.swift in Sources */,
18771885
ACC362C824D2C7C9002C67BA /* TestUtils.swift in Sources */,
18781886
AC241C2224F5757C00F8F9CC /* Mocks.swift in Sources */,

swift-sdk/Internal/DependencyContainer.swift

Lines changed: 34 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -49,41 +49,41 @@ extension DependencyContainerProtocol {
4949
dateProvider: dateProvider)
5050
}
5151

52-
func createRequestProcessor(apiKey: String,
53-
config: IterableConfig,
54-
endPoint: String,
55-
authProvider: AuthProvider?,
56-
authManager: IterableInternalAuthManagerProtocol,
57-
deviceMetadata: DeviceMetadata) -> RequestProcessorProtocol {
52+
func createRequestHandler(apiKey: String,
53+
config: IterableConfig,
54+
endPoint: String,
55+
authProvider: AuthProvider?,
56+
authManager: IterableInternalAuthManagerProtocol,
57+
deviceMetadata: DeviceMetadata) -> RequestHandlerProtocol {
5858
if #available(iOS 10.0, *) {
59-
return RequestProcessor(onlineCreator: { [weak authProvider] in
60-
OnlineRequestProcessor(apiKey: apiKey,
61-
authProvider: authProvider,
62-
authManager: authManager,
63-
endPoint: endPoint,
64-
networkSession: networkSession,
65-
deviceMetadata: deviceMetadata) },
66-
offlineCreator: { [weak authProvider] in
67-
guard let persistenceContextProvider = createPersistenceContextProvider() else {
68-
return nil
69-
}
70-
71-
return OfflineRequestProcessor(apiKey: apiKey,
72-
authProvider: authProvider,
73-
authManager: authManager,
74-
endPoint: endPoint,
75-
deviceMetadata: deviceMetadata,
76-
taskScheduler: createTaskScheduler(persistenceContextProvider: persistenceContextProvider),
77-
taskRunner: createTaskRunner(persistenceContextProvider: persistenceContextProvider),
78-
notificationCenter: notificationCenter) },
79-
strategy: DefaultRequestProcessorStrategy(selectOffline: config.enableOfflineMode))
59+
return RequestHandler(onlineCreator: { [weak authProvider] in
60+
OnlineRequestProcessor(apiKey: apiKey,
61+
authProvider: authProvider,
62+
authManager: authManager,
63+
endPoint: endPoint,
64+
networkSession: networkSession,
65+
deviceMetadata: deviceMetadata) },
66+
offlineCreator: { [weak authProvider] in
67+
guard let persistenceContextProvider = createPersistenceContextProvider() else {
68+
return nil
69+
}
70+
71+
return OfflineRequestProcessor(apiKey: apiKey,
72+
authProvider: authProvider,
73+
authManager: authManager,
74+
endPoint: endPoint,
75+
deviceMetadata: deviceMetadata,
76+
taskScheduler: createTaskScheduler(persistenceContextProvider: persistenceContextProvider),
77+
taskRunner: createTaskRunner(persistenceContextProvider: persistenceContextProvider),
78+
notificationCenter: notificationCenter) },
79+
strategy: DefaultRequestProcessorStrategy(selectOffline: config.enableOfflineMode))
8080
} else {
81-
return OnlineRequestProcessor(apiKey: apiKey,
82-
authProvider: authProvider,
83-
authManager: authManager,
84-
endPoint: endPoint,
85-
networkSession: networkSession,
86-
deviceMetadata: deviceMetadata)
81+
return LegacyRequestHandler(apiKey: apiKey,
82+
authProvider: authProvider,
83+
authManager: authManager,
84+
endPoint: endPoint,
85+
networkSession: networkSession,
86+
deviceMetadata: deviceMetadata)
8787
}
8888
}
8989

@@ -94,7 +94,7 @@ extension DependencyContainerProtocol {
9494
fatalError("Unable to create persistence container for iOS < 10")
9595
}
9696
}
97-
97+
9898
@available(iOS 10.0, *)
9999
private func createTaskScheduler(persistenceContextProvider: IterablePersistenceContextProvider) -> IterableTaskScheduler {
100100
IterableTaskScheduler(persistenceContextProvider: persistenceContextProvider,

0 commit comments

Comments
 (0)