From 8873560868a81ed1b0d097d1ddfc463b4b4c33e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yusuf=20To=CC=88r?= Date: Wed, 6 Dec 2023 18:26:59 -0500 Subject: [PATCH] Removed redundant code, fixed tests --- .../TrackableSuperwallEvent.swift | 6 ++--- .../TriggerSessionManager.swift | 4 ++-- .../SuperwallKit/Debug/SWBounceButton.swift | 23 ------------------- .../Dependencies/DependencyContainer.swift | 9 ++------ .../PaywallViewController.swift | 3 --- .../StoreTransaction/StoreTransaction.swift | 9 ++------ .../Purchase Controller/PurchaseResult.swift | 8 ------- .../Internal Tracking/TrackTests.swift | 10 ++++---- .../TrackingLogicTests.swift | 1 - .../PresentPaywallOperatorTests.swift | 2 -- .../View Controller/SurveyManagerTests.swift | 10 -------- 11 files changed, 13 insertions(+), 72 deletions(-) diff --git a/Sources/SuperwallKit/Analytics/Internal Tracking/Trackable Events/TrackableSuperwallEvent.swift b/Sources/SuperwallKit/Analytics/Internal Tracking/Trackable Events/TrackableSuperwallEvent.swift index 21edf9cd2..fb1a97558 100644 --- a/Sources/SuperwallKit/Analytics/Internal Tracking/Trackable Events/TrackableSuperwallEvent.swift +++ b/Sources/SuperwallKit/Analytics/Internal Tracking/Trackable Events/TrackableSuperwallEvent.swift @@ -264,6 +264,7 @@ enum InternalSuperwallEvent { struct TriggerFire: TrackableSuperwallEvent { let triggerResult: InternalTriggerResult + let sessionId: String var superwallEvent: SuperwallEvent { return .triggerFire( eventName: triggerName, @@ -272,16 +273,13 @@ enum InternalSuperwallEvent { } let triggerName: String var customParameters: [String: Any] = [:] - unowned let sessionEventsManager: SessionEventsManager func getSuperwallParameters() async -> [String: Any] { var params: [String: Any] = [ "trigger_name": triggerName ] - if let triggerSession = await sessionEventsManager.triggerSession.activeTriggerSession { - params["trigger_session_id"] = triggerSession.id - } + params["trigger_session_id"] = sessionId switch triggerResult { case .noRuleMatch(let unmatchedRules): diff --git a/Sources/SuperwallKit/Analytics/Trigger Session Manager/TriggerSessionManager.swift b/Sources/SuperwallKit/Analytics/Trigger Session Manager/TriggerSessionManager.swift index 5ecc9c292..dea1c3c10 100644 --- a/Sources/SuperwallKit/Analytics/Trigger Session Manager/TriggerSessionManager.swift +++ b/Sources/SuperwallKit/Analytics/Trigger Session Manager/TriggerSessionManager.swift @@ -175,8 +175,8 @@ actor TriggerSessionManager { if let triggerResult = triggerResult { let trackedEvent = InternalSuperwallEvent.TriggerFire( triggerResult: triggerResult, - triggerName: eventName, - sessionEventsManager: sessionEventsManager + sessionId: session.id, + triggerName: eventName ) _ = await trackEvent(trackedEvent) } diff --git a/Sources/SuperwallKit/Debug/SWBounceButton.swift b/Sources/SuperwallKit/Debug/SWBounceButton.swift index 76b7164d6..a68308b0c 100644 --- a/Sources/SuperwallKit/Debug/SWBounceButton.swift +++ b/Sources/SuperwallKit/Debug/SWBounceButton.swift @@ -23,9 +23,7 @@ final class SWBounceButton: UIButton { var toggleKey = "key" var isOn = false var canToggle = false - var oldTitle: String = "" - var showLoading = false { didSet { if showLoading { @@ -53,15 +51,6 @@ final class SWBounceButton: UIButton { return view }() - var customTint: UIColor? { - didSet { - if let customTint = customTint { - backgroundColor = customTint.withAlphaComponent(0.15) - setTitleColor(customTint, for: .normal) - } - } - } - var onBackgroundColor: UIColor = primaryButtonBackgroundColor var offBackgroundColor: UIColor = secondaryButtonBackgroundColor @@ -94,14 +83,6 @@ final class SWBounceButton: UIButton { } } - private var _borderColor: UIColor? - var borderColor: UIColor? { - didSet { - _borderColor = borderColor - self.layer.borderColor = (borderColor ?? UIColor.clear).cgColor - } - } - // MARK: - Initializers convenience init() { self.init(frame: CGRect()) @@ -201,10 +182,6 @@ final class SWBounceButton: UIButton { } } - override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { - self.borderColor = _borderColor - } - override func didMoveToSuperview() { super.didMoveToSuperview() if canToggle { diff --git a/Sources/SuperwallKit/Dependencies/DependencyContainer.swift b/Sources/SuperwallKit/Dependencies/DependencyContainer.swift index 33d6e54d0..b4a182a8a 100644 --- a/Sources/SuperwallKit/Dependencies/DependencyContainer.swift +++ b/Sources/SuperwallKit/Dependencies/DependencyContainer.swift @@ -219,7 +219,6 @@ extension DependencyContainer: ViewControllerFactory { deviceHelper: deviceHelper, factory: self, storage: storage, - paywallManager: paywallManager, webView: webView, cache: cache ) @@ -412,23 +411,19 @@ extension DependencyContainer: ConfigManagerFactory { // MARK: - StoreTransactionFactory extension DependencyContainer: StoreTransactionFactory { func makeStoreTransaction(from transaction: SK1Transaction) async -> StoreTransaction { - let triggerSession = await sessionEventsManager.triggerSession.activeTriggerSession return StoreTransaction( transaction: SK1StoreTransaction(transaction: transaction), configRequestId: configManager.config?.requestId ?? "", - appSessionId: appSessionManager.appSession.id, - triggerSessionId: triggerSession?.id + appSessionId: appSessionManager.appSession.id ) } @available(iOS 15.0, tvOS 15.0, watchOS 8.0, *) func makeStoreTransaction(from transaction: SK2Transaction) async -> StoreTransaction { - let triggerSession = await sessionEventsManager.triggerSession.activeTriggerSession return StoreTransaction( transaction: SK2StoreTransaction(transaction: transaction), configRequestId: configManager.config?.requestId ?? "", - appSessionId: appSessionManager.appSession.id, - triggerSessionId: triggerSession?.id + appSessionId: appSessionManager.appSession.id ) } } diff --git a/Sources/SuperwallKit/Paywall/View Controller/PaywallViewController.swift b/Sources/SuperwallKit/Paywall/View Controller/PaywallViewController.swift index ebb477345..d8f0b4198 100644 --- a/Sources/SuperwallKit/Paywall/View Controller/PaywallViewController.swift +++ b/Sources/SuperwallKit/Paywall/View Controller/PaywallViewController.swift @@ -144,7 +144,6 @@ public class PaywallViewController: UIViewController, LoadingDelegate { private unowned let factory: TriggerSessionManagerFactory & TriggerFactory private unowned let storage: Storage private unowned let deviceHelper: DeviceHelper - private unowned let paywallManager: PaywallManager private weak var cache: PaywallViewControllerCache? // MARK: - View Lifecycle @@ -156,7 +155,6 @@ public class PaywallViewController: UIViewController, LoadingDelegate { deviceHelper: DeviceHelper, factory: TriggerSessionManagerFactory & TriggerFactory, storage: Storage, - paywallManager: PaywallManager, webView: SWWebView, cache: PaywallViewControllerCache? ) { @@ -172,7 +170,6 @@ public class PaywallViewController: UIViewController, LoadingDelegate { self.factory = factory self.storage = storage self.paywall = paywall - self.paywallManager = paywallManager self.webView = webView presentationStyle = paywall.presentation.style diff --git a/Sources/SuperwallKit/StoreKit/Abstractions/StoreTransaction/StoreTransaction.swift b/Sources/SuperwallKit/StoreKit/Abstractions/StoreTransaction/StoreTransaction.swift index 6617fe81e..342471b66 100644 --- a/Sources/SuperwallKit/StoreKit/Abstractions/StoreTransaction/StoreTransaction.swift +++ b/Sources/SuperwallKit/StoreKit/Abstractions/StoreTransaction/StoreTransaction.swift @@ -25,7 +25,6 @@ public final class StoreTransaction: NSObject, StoreTransactionType, Encodable { public let configRequestId: String public let appSessionId: String - public let triggerSessionId: String? public var transactionDate: Date? { transaction.transactionDate } public var originalTransactionIdentifier: String { transaction.originalTransactionIdentifier } @@ -56,13 +55,11 @@ public final class StoreTransaction: NSObject, StoreTransactionType, Encodable { init( transaction: StoreTransactionType, configRequestId: String, - appSessionId: String, - triggerSessionId: String? + appSessionId: String ) { self.transaction = transaction self.configRequestId = configRequestId self.appSessionId = appSessionId - self.triggerSessionId = triggerSessionId } public enum CodingKeys: String, CodingKey { @@ -90,7 +87,6 @@ public final class StoreTransaction: NSObject, StoreTransactionType, Encodable { var container = encoder.container(keyedBy: CodingKeys.self) try container.encode(configRequestId, forKey: .configRequestId) try container.encode(appSessionId, forKey: .appSessionId) - try container.encodeIfPresent(triggerSessionId, forKey: .triggerSessionId) try container.encodeIfPresent(transactionDate, forKey: .transactionDate) try container.encode(originalTransactionIdentifier, forKey: .originalTransactionIdentifier) try container.encode(state, forKey: .state) @@ -115,8 +111,7 @@ extension StoreTransaction: Stubbable { return StoreTransaction( transaction: SK1StoreTransaction(transaction: SKPaymentTransaction()), configRequestId: "abc", - appSessionId: "def", - triggerSessionId: "ghi" + appSessionId: "def" ) } } diff --git a/Sources/SuperwallKit/StoreKit/Purchase Controller/PurchaseResult.swift b/Sources/SuperwallKit/StoreKit/Purchase Controller/PurchaseResult.swift index 34e62302d..222e12d8c 100644 --- a/Sources/SuperwallKit/StoreKit/Purchase Controller/PurchaseResult.swift +++ b/Sources/SuperwallKit/StoreKit/Purchase Controller/PurchaseResult.swift @@ -8,14 +8,6 @@ import Foundation import StoreKit -enum InternalPurchaseResult { - case purchased(StoreTransaction?) - case restored - case cancelled - case pending - case failed(Error) -} - /// An enum that defines the possible outcomes of attempting to purchase a product. /// /// When implementing the ``PurchaseController/purchase(product:)`` delegate diff --git a/Tests/SuperwallKitTests/Analytics/Internal Tracking/TrackTests.swift b/Tests/SuperwallKitTests/Analytics/Internal Tracking/TrackTests.swift index 52a87bf52..eb839a69e 100644 --- a/Tests/SuperwallKitTests/Analytics/Internal Tracking/TrackTests.swift +++ b/Tests/SuperwallKitTests/Analytics/Internal Tracking/TrackTests.swift @@ -292,7 +292,7 @@ final class TrackingTests: XCTestCase { .init(source: .expression, experimentId: "1"), .init(source: .occurrence, experimentId: "2") ] - let result = await Superwall.shared.track(InternalSuperwallEvent.TriggerFire(triggerResult: .noRuleMatch(unmatchedRules), triggerName: triggerName, sessionEventsManager: dependencyContainer.sessionEventsManager)) + let result = await Superwall.shared.track(InternalSuperwallEvent.TriggerFire(triggerResult: .noRuleMatch(unmatchedRules), sessionId: "sessionId", triggerName: triggerName)) XCTAssertNotNil(result.parameters.eventParams["$app_session_id"]) XCTAssertTrue(result.parameters.eventParams["$is_standard_event"] as! Bool) XCTAssertEqual(result.parameters.eventParams["$event_name"] as! String, "trigger_fire") @@ -307,7 +307,7 @@ final class TrackingTests: XCTestCase { let triggerName = "My Trigger" let dependencyContainer = DependencyContainer() let experiment: Experiment = .stub() - let result = await Superwall.shared.track(InternalSuperwallEvent.TriggerFire(triggerResult: .holdout(experiment), triggerName: triggerName, sessionEventsManager: dependencyContainer.sessionEventsManager)) + let result = await Superwall.shared.track(InternalSuperwallEvent.TriggerFire(triggerResult: .holdout(experiment), sessionId: "sessionId", triggerName: triggerName)) XCTAssertNotNil(result.parameters.eventParams["$app_session_id"]) XCTAssertTrue(result.parameters.eventParams["$is_standard_event"] as! Bool) XCTAssertEqual(result.parameters.eventParams["$event_name"] as! String, "trigger_fire") @@ -322,7 +322,7 @@ final class TrackingTests: XCTestCase { let triggerName = "My Trigger" let dependencyContainer = DependencyContainer() let experiment: Experiment = .stub() - let result = await Superwall.shared.track(InternalSuperwallEvent.TriggerFire(triggerResult: .paywall(experiment), triggerName: triggerName, sessionEventsManager: dependencyContainer.sessionEventsManager)) + let result = await Superwall.shared.track(InternalSuperwallEvent.TriggerFire(triggerResult: .paywall(experiment), sessionId: "sessionId", triggerName: triggerName)) XCTAssertNotNil(result.parameters.eventParams["$app_session_id"]) XCTAssertTrue(result.parameters.eventParams["$is_standard_event"] as! Bool) XCTAssertEqual(result.parameters.eventParams["$event_name"] as! String, "trigger_fire") @@ -337,7 +337,7 @@ final class TrackingTests: XCTestCase { func test_triggerFire_eventNotFound() async { let triggerName = "My Trigger" let dependencyContainer = DependencyContainer() - let result = await Superwall.shared.track(InternalSuperwallEvent.TriggerFire(triggerResult: .eventNotFound, triggerName: triggerName, sessionEventsManager: dependencyContainer.sessionEventsManager)) + let result = await Superwall.shared.track(InternalSuperwallEvent.TriggerFire(triggerResult: .eventNotFound, sessionId: "sessionId", triggerName: triggerName)) print(result) XCTAssertNotNil(result.parameters.eventParams["$app_session_id"]) XCTAssertTrue(result.parameters.eventParams["$is_standard_event"] as! Bool) @@ -349,7 +349,7 @@ final class TrackingTests: XCTestCase { let triggerName = "My Trigger" let dependencyContainer = DependencyContainer() let error = NSError(domain: "com.superwall", code: 400) - let result = await Superwall.shared.track(InternalSuperwallEvent.TriggerFire(triggerResult: .error(error), triggerName: triggerName, sessionEventsManager: dependencyContainer.sessionEventsManager)) + let result = await Superwall.shared.track(InternalSuperwallEvent.TriggerFire(triggerResult: .error(error), sessionId: "sessionId", triggerName: triggerName)) print(result) XCTAssertNotNil(result.parameters.eventParams["$app_session_id"]) XCTAssertTrue(result.parameters.eventParams["$is_standard_event"] as! Bool) diff --git a/Tests/SuperwallKitTests/Analytics/Internal Tracking/TrackingLogicTests.swift b/Tests/SuperwallKitTests/Analytics/Internal Tracking/TrackingLogicTests.swift index c0f1a1872..78aaa7ee2 100644 --- a/Tests/SuperwallKitTests/Analytics/Internal Tracking/TrackingLogicTests.swift +++ b/Tests/SuperwallKitTests/Analytics/Internal Tracking/TrackingLogicTests.swift @@ -310,7 +310,6 @@ final class TrackingLogicTests: XCTestCase { deviceHelper: dependencyContainer.deviceHelper, factory: dependencyContainer, storage: dependencyContainer.storage, - paywallManager: dependencyContainer.paywallManager, webView: webView, cache: nil ) diff --git a/Tests/SuperwallKitTests/Paywall/Presentation/Internal Presentation/Operators/PresentPaywallOperatorTests.swift b/Tests/SuperwallKitTests/Paywall/Presentation/Internal Presentation/Operators/PresentPaywallOperatorTests.swift index 284d6f775..fd6b3aba3 100644 --- a/Tests/SuperwallKitTests/Paywall/Presentation/Internal Presentation/Operators/PresentPaywallOperatorTests.swift +++ b/Tests/SuperwallKitTests/Paywall/Presentation/Internal Presentation/Operators/PresentPaywallOperatorTests.swift @@ -44,7 +44,6 @@ final class PresentPaywallOperatorTests: XCTestCase { deviceHelper: dependencyContainer.deviceHelper, factory: dependencyContainer, storage: dependencyContainer.storage, - paywallManager: dependencyContainer.paywallManager, webView: webView, cache: nil ) @@ -109,7 +108,6 @@ final class PresentPaywallOperatorTests: XCTestCase { deviceHelper: dependencyContainer.deviceHelper, factory: dependencyContainer, storage: dependencyContainer.storage, - paywallManager: dependencyContainer.paywallManager, webView: webView, cache: nil ) diff --git a/Tests/SuperwallKitTests/Paywall/View Controller/SurveyManagerTests.swift b/Tests/SuperwallKitTests/Paywall/View Controller/SurveyManagerTests.swift index 71321f494..2888f0f44 100644 --- a/Tests/SuperwallKitTests/Paywall/View Controller/SurveyManagerTests.swift +++ b/Tests/SuperwallKitTests/Paywall/View Controller/SurveyManagerTests.swift @@ -33,7 +33,6 @@ final class SurveyManagerTests: XCTestCase { deviceHelper: dependencyContainer.deviceHelper, factory: dependencyContainer, storage: dependencyContainer.storage, - paywallManager: dependencyContainer.paywallManager, webView: webView, cache: nil ) @@ -74,7 +73,6 @@ final class SurveyManagerTests: XCTestCase { deviceHelper: dependencyContainer.deviceHelper, factory: dependencyContainer, storage: dependencyContainer.storage, - paywallManager: dependencyContainer.paywallManager, webView: webView, cache: nil ) @@ -116,7 +114,6 @@ final class SurveyManagerTests: XCTestCase { deviceHelper: dependencyContainer.deviceHelper, factory: dependencyContainer, storage: dependencyContainer.storage, - paywallManager: dependencyContainer.paywallManager, webView: webView, cache: nil ) @@ -157,7 +154,6 @@ final class SurveyManagerTests: XCTestCase { deviceHelper: dependencyContainer.deviceHelper, factory: dependencyContainer, storage: dependencyContainer.storage, - paywallManager: dependencyContainer.paywallManager, webView: webView, cache: nil ) @@ -198,7 +194,6 @@ final class SurveyManagerTests: XCTestCase { deviceHelper: dependencyContainer.deviceHelper, factory: dependencyContainer, storage: dependencyContainer.storage, - paywallManager: dependencyContainer.paywallManager, webView: webView, cache: nil ) @@ -239,7 +234,6 @@ final class SurveyManagerTests: XCTestCase { deviceHelper: dependencyContainer.deviceHelper, factory: dependencyContainer, storage: dependencyContainer.storage, - paywallManager: dependencyContainer.paywallManager, webView: webView, cache: nil ) @@ -286,7 +280,6 @@ final class SurveyManagerTests: XCTestCase { deviceHelper: dependencyContainer.deviceHelper, factory: dependencyContainer, storage: dependencyContainer.storage, - paywallManager: dependencyContainer.paywallManager, webView: webView, cache: nil ) @@ -336,7 +329,6 @@ final class SurveyManagerTests: XCTestCase { deviceHelper: dependencyContainer.deviceHelper, factory: dependencyContainer, storage: dependencyContainer.storage, - paywallManager: dependencyContainer.paywallManager, webView: webView, cache: nil ) @@ -384,7 +376,6 @@ final class SurveyManagerTests: XCTestCase { deviceHelper: dependencyContainer.deviceHelper, factory: dependencyContainer, storage: dependencyContainer.storage, - paywallManager: dependencyContainer.paywallManager, webView: webView, cache: nil ) @@ -436,7 +427,6 @@ final class SurveyManagerTests: XCTestCase { deviceHelper: dependencyContainer.deviceHelper, factory: dependencyContainer, storage: dependencyContainer.storage, - paywallManager: dependencyContainer.paywallManager, webView: webView, cache: nil )