Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ final class DataManager {
}

struct DemoDependencyContainer: DependencyContainerProtocol {
func createInAppFetcher(apiClient _: ApiClientProtocol) -> InAppFetcherProtocol {
func createInAppFetcher(apiClient _: ApiClientProtocol, authManager _: IterableAuthManagerProtocol?) -> InAppFetcherProtocol {
inAppFetcher
}

Expand Down
3 changes: 2 additions & 1 deletion swift-sdk/Internal/InternalIterableAPI.swift
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,8 @@ final class InternalIterableAPI: NSObject, PushTrackerProtocol, AuthProvider {
self.dependencyContainer.createInAppManager(config: self.config,
apiClient: self.apiClient,
requestHandler: self.requestHandler,
deviceMetadata: deviceMetadata)
deviceMetadata: deviceMetadata,
authManager: self.authManager)
}()

lazy var authManager: IterableAuthManagerProtocol = {
Expand Down
4 changes: 2 additions & 2 deletions swift-sdk/Internal/Utilities/DependencyContainer.swift
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
import Foundation

struct DependencyContainer: DependencyContainerProtocol {
func createInAppFetcher(apiClient: ApiClientProtocol) -> InAppFetcherProtocol {
InAppFetcher(apiClient: apiClient)
func createInAppFetcher(apiClient: ApiClientProtocol, authManager: IterableAuthManagerProtocol?) -> InAppFetcherProtocol {
InAppFetcher(apiClient: apiClient, authManager: authManager)
}

let dateProvider: DateProviderProtocol = SystemDateProvider()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ protocol DependencyContainerProtocol: RedirectNetworkSessionProvider {
var notificationCenter: NotificationCenterProtocol { get }
var apnsTypeChecker: APNSTypeCheckerProtocol { get }

func createInAppFetcher(apiClient: ApiClientProtocol) -> InAppFetcherProtocol
func createInAppFetcher(apiClient: ApiClientProtocol, authManager: IterableAuthManagerProtocol?) -> InAppFetcherProtocol
func createPersistenceContextProvider() -> IterablePersistenceContextProvider?
func createRequestHandler(apiKey: String,
config: IterableConfig,
Expand All @@ -32,10 +32,11 @@ extension DependencyContainerProtocol {
func createInAppManager(config: IterableConfig,
apiClient: ApiClientProtocol,
requestHandler: RequestHandlerProtocol,
deviceMetadata: DeviceMetadata) -> IterableInternalInAppManagerProtocol {
deviceMetadata: DeviceMetadata,
authManager: IterableAuthManagerProtocol?) -> IterableInternalInAppManagerProtocol {
InAppManager(requestHandler: requestHandler,
deviceMetadata: deviceMetadata,
fetcher: createInAppFetcher(apiClient: apiClient),
fetcher: createInAppFetcher(apiClient: apiClient, authManager: authManager),
displayer: inAppDisplayer,
persister: inAppPersister,
inAppDelegate: config.inAppDelegate,
Expand Down
12 changes: 10 additions & 2 deletions swift-sdk/Internal/in-app/InAppHelper.swift
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,16 @@ import UIKit
/// All classes/structs are internal.

struct InAppHelper {
static func getInAppMessagesFromServer(apiClient: ApiClientProtocol, number: Int) -> Pending<[IterableInAppMessage], SendRequestError> {
apiClient.getInAppMessages(NSNumber(value: number)).map {
static func getInAppMessagesFromServer(apiClient: ApiClientProtocol,
authManager: IterableAuthManagerProtocol?,
number: Int) -> Pending<[IterableInAppMessage], SendRequestError> {

RequestProcessorUtil.sendRequest(requestProvider: { apiClient.getInAppMessages(NSNumber(value: number)) },
successHandler: nil,
failureHandler: nil,
authManager: authManager,
requestIdentifier: "getInAppMessages")
.map {
InAppMessageParser.parse(payload: $0).compactMap { parseResult in
process(parseResult: parseResult, apiClient: apiClient)
}
Expand Down
8 changes: 6 additions & 2 deletions swift-sdk/Internal/in-app/InAppInternal.swift
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,10 @@ struct IterableInAppMessageMetadata {
}

class InAppFetcher: InAppFetcherProtocol {
init(apiClient: ApiClientProtocol) {
init(apiClient: ApiClientProtocol, authManager: IterableAuthManagerProtocol?) {
ITBInfo()
self.apiClient = apiClient
self.authManager = authManager
}

deinit {
Expand All @@ -43,12 +44,15 @@ class InAppFetcher: InAppFetcherProtocol {
return Fulfill(error: IterableError.general(description: "Invalid state: expected InternalApi"))
}

return InAppHelper.getInAppMessagesFromServer(apiClient: apiClient, number: numMessages).mapFailure { $0 }
return InAppHelper.getInAppMessagesFromServer(apiClient: apiClient,
authManager: authManager,
number: numMessages).mapFailure { $0 }
}

// MARK: - Private/Internal

private weak var apiClient: ApiClientProtocol?
private let authManager: IterableAuthManagerProtocol?

private let numMessages = 100
}
Expand Down
2 changes: 1 addition & 1 deletion tests/common/CommonExtensions.swift
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ class MockDependencyContainer: DependencyContainerProtocol {
ITBInfo()
}

func createInAppFetcher(apiClient _: ApiClientProtocol) -> InAppFetcherProtocol {
func createInAppFetcher(apiClient _: ApiClientProtocol, authManager _: IterableAuthManagerProtocol?) -> InAppFetcherProtocol {
inAppFetcher
}

Expand Down
4 changes: 2 additions & 2 deletions tests/endpoint-tests/E2EDependencyContainer.swift
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ class E2EDependencyContainer: DependencyContainerProtocol {
let notificationCenter: NotificationCenterProtocol
let apnsTypeChecker: APNSTypeCheckerProtocol

func createInAppFetcher(apiClient: ApiClientProtocol) -> InAppFetcherProtocol {
InAppFetcher(apiClient: apiClient)
func createInAppFetcher(apiClient: ApiClientProtocol, authManager: IterableAuthManagerProtocol?) -> InAppFetcherProtocol {
InAppFetcher(apiClient: apiClient, authManager: authManager)
}

init(dateProvider: DateProviderProtocol = SystemDateProvider(),
Expand Down
4 changes: 2 additions & 2 deletions tests/unit-tests/InAppHelperTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ class InAppHelperTests: XCTestCase {
}
}

InAppHelper.getInAppMessagesFromServer(apiClient: MyApiClient(), number: 10).onSuccess { messages in
InAppHelper.getInAppMessagesFromServer(apiClient: MyApiClient(), authManager: nil, number: 10).onSuccess { messages in
XCTAssertEqual(messages.count, 3)
XCTAssertEqual(messages[0].messageId, "message1")
XCTAssertEqual(messages[1].messageId, "message2")
Expand Down Expand Up @@ -69,7 +69,7 @@ class InAppHelperTests: XCTestCase {
}
}

InAppHelper.getInAppMessagesFromServer(apiClient: MyApiClient(expectation: expectation1), number: 10).onSuccess { messages in
InAppHelper.getInAppMessagesFromServer(apiClient: MyApiClient(expectation: expectation1), authManager: nil, number: 10).onSuccess { messages in
XCTAssertEqual(messages.count, 1)
XCTAssertEqual(messages[0].messageId, "message1")
}
Expand Down