From beda8a0622944218f6f34ff27f3095f23dc665ca Mon Sep 17 00:00:00 2001 From: Salim Braksa Date: Mon, 8 Jan 2024 17:59:56 +0100 Subject: [PATCH 1/7] Fix an issue where the All Domains flow wasn't taking into consideration sites with existing plan --- .../RegisterDomainCoordinator.swift | 72 +++++++++++-------- 1 file changed, 42 insertions(+), 30 deletions(-) diff --git a/WordPress/Classes/ViewRelated/Domains/Domain registration/RegisterDomainSuggestions/RegisterDomainCoordinator.swift b/WordPress/Classes/ViewRelated/Domains/Domain registration/RegisterDomainSuggestions/RegisterDomainCoordinator.swift index 4af7f4766a1e..7029c860d502 100644 --- a/WordPress/Classes/ViewRelated/Domains/Domain registration/RegisterDomainSuggestions/RegisterDomainCoordinator.swift +++ b/WordPress/Classes/ViewRelated/Domains/Domain registration/RegisterDomainSuggestions/RegisterDomainCoordinator.swift @@ -13,6 +13,10 @@ class RegisterDomainCoordinator { typealias DomainPurchasedCallback = ((UIViewController, String) -> Void) typealias DomainAddedToCartCallback = ((UIViewController, String, Blog) -> Void) + // MARK: - Dependencies + + private let domainRegistrationService: RegisterDomainDetailsServiceProxyProtocol + // MARK: Variables private let crashLogger: CrashLogging @@ -20,9 +24,10 @@ class RegisterDomainCoordinator { let analyticsSource: String var site: Blog? + var domain: DomainSuggestion? + var domainPurchasedCallback: DomainPurchasedCallback? var domainAddedToCartAndLinkedToSiteCallback: DomainAddedToCartCallback? - var domain: DomainSuggestion? private var webViewURLChangeObservation: NSKeyValueObservation? @@ -36,11 +41,13 @@ class RegisterDomainCoordinator { init(site: Blog?, domainPurchasedCallback: RegisterDomainCoordinator.DomainPurchasedCallback? = nil, analyticsSource: String = "domains_register", - crashLogger: CrashLogging = .main) { + crashLogger: CrashLogging = .main, + domainRegistrationService: RegisterDomainDetailsServiceProxyProtocol = RegisterDomainDetailsServiceProxy()) { self.site = site self.domainPurchasedCallback = domainPurchasedCallback self.crashLogger = crashLogger self.analyticsSource = analyticsSource + self.domainRegistrationService = domainRegistrationService } // MARK: Public Functions @@ -50,6 +57,7 @@ class RegisterDomainCoordinator { func handlePurchaseDomainOnly(on viewController: UIViewController, onSuccess: @escaping () -> (), onFailure: @escaping () -> ()) { + // TODO: Refactor `handlePurchaseDomainOnly` to use `purchaseDomain` helper. createCart { [weak self] result in switch result { case .success: @@ -66,6 +74,7 @@ class RegisterDomainCoordinator { func addDomainToCartLinkedToCurrentSite(on viewController: UIViewController, onSuccess: @escaping () -> (), onFailure: @escaping () -> ()) { + // TODO: Refactor `addDomainToCartLinkedToCurrentSite` to use `purchaseDomain` helper. guard let blog = site else { return } @@ -83,18 +92,9 @@ class RegisterDomainCoordinator { /// Related to the `purchaseFromDomainManagement` Domain selection type. /// Adds the selected domain to the cart then launches the checkout webview /// The checkout webview is configured for the domain management flow - func handleNoSiteChoice(on viewController: UIViewController, - choicesViewModel: DomainPurchaseChoicesViewModel?) { - createCart { [weak self] result in - switch result { - case .success: - self?.presentCheckoutWebview(on: viewController, title: TextContent.checkoutTitle) - choicesViewModel?.isGetDomainLoading = false - - case .failure: - viewController.displayActionableNotice(title: TextContent.errorTitle, actionTitle: TextContent.errorDismiss) - choicesViewModel?.isGetDomainLoading = false - } + func handleNoSiteChoice(on viewController: UIViewController, choicesViewModel: DomainPurchaseChoicesViewModel?) { + self.purchaseDomain(for: site, on: viewController) { _ in + choicesViewModel?.isGetDomainLoading = false } } @@ -117,18 +117,11 @@ class RegisterDomainCoordinator { return } controller.showLoading() - self.createCart { [weak self] result in - guard let self else { - return - } - switch result { - case .success(let domain): + self.purchaseDomain(for: selectedBlog, on: controller) { result in + controller.hideLoading() + if case .success = result { self.site = selectedBlog - self.domainAddedToCartAndLinkedToSiteCallback?(controller, domain.domainName, selectedBlog) - case .failure: - controller.displayActionableNotice(title: TextContent.errorTitle, actionTitle: TextContent.errorDismiss) } - controller.hideLoading() } } @@ -141,20 +134,39 @@ class RegisterDomainCoordinator { // MARK: Helpers + private func purchaseDomain(for site: Blog?, on viewController: UIViewController, completion: @escaping (Result) -> Void) { + self.createCart { [weak self] result in + guard let self else { + return + } + switch result { + case .success(let domain): + if let site, site.canRegisterDomainWithPaidPlan { + self.domainAddedToCartAndLinkedToSiteCallback?(viewController, domain.domainName, site) + } else { + self.presentCheckoutWebview(on: viewController, title: TextContent.checkoutTitle) + } + completion(.success(())) + case .failure(let error): + viewController.displayActionableNotice(title: TextContent.errorTitle, actionTitle: TextContent.errorDismiss) + completion(.failure(error)) + } + } + } + private func createCart(completion: @escaping (Result) -> Void) { guard let domain else { completion(.failure(Error.noDomainWhenCreatingCart)) return } let siteID = site?.dotComID?.intValue - let proxy = RegisterDomainDetailsServiceProxy() - proxy.createPersistentDomainShoppingCart(siteID: siteID, - domainSuggestion: domain, - privacyProtectionEnabled: domain.supportsPrivacy ?? false, - success: { _ in + self.domainRegistrationService.createPersistentDomainShoppingCart(siteID: siteID, + domainSuggestion: domain, + privacyProtectionEnabled: domain.supportsPrivacy ?? false, + success: { _ in completion(.success(domain)) }, - failure: { error in + failure: { error in completion(.failure(error)) }) } From 0ba85e7e2c15386694d761f7f1dd4a5062d7cd24 Mon Sep 17 00:00:00 2001 From: Salim Braksa Date: Wed, 17 Jan 2024 15:11:15 +0100 Subject: [PATCH 2/7] Add a TODO to replace site attribute with siteID --- .../RegisterDomainSuggestions/RegisterDomainCoordinator.swift | 2 ++ 1 file changed, 2 insertions(+) diff --git a/WordPress/Classes/ViewRelated/Domains/Domain registration/RegisterDomainSuggestions/RegisterDomainCoordinator.swift b/WordPress/Classes/ViewRelated/Domains/Domain registration/RegisterDomainSuggestions/RegisterDomainCoordinator.swift index 7029c860d502..6ad6415dff95 100644 --- a/WordPress/Classes/ViewRelated/Domains/Domain registration/RegisterDomainSuggestions/RegisterDomainCoordinator.swift +++ b/WordPress/Classes/ViewRelated/Domains/Domain registration/RegisterDomainSuggestions/RegisterDomainCoordinator.swift @@ -23,7 +23,9 @@ class RegisterDomainCoordinator { let analyticsSource: String + // TODO: This can cause Core Data crashes. Pass `NSManagedObjectID` instead. var site: Blog? + var domain: DomainSuggestion? var domainPurchasedCallback: DomainPurchasedCallback? From 1ddee6373edc094b9a88a83f1f61502f4e45edf7 Mon Sep 17 00:00:00 2001 From: Salim Braksa Date: Wed, 17 Jan 2024 15:39:07 +0100 Subject: [PATCH 3/7] Show Domain Registration screen for blogs that have a domain credit --- .../RegisterDomainCoordinator.swift | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/WordPress/Classes/ViewRelated/Domains/Domain registration/RegisterDomainSuggestions/RegisterDomainCoordinator.swift b/WordPress/Classes/ViewRelated/Domains/Domain registration/RegisterDomainSuggestions/RegisterDomainCoordinator.swift index 6ad6415dff95..f9751efab733 100644 --- a/WordPress/Classes/ViewRelated/Domains/Domain registration/RegisterDomainSuggestions/RegisterDomainCoordinator.swift +++ b/WordPress/Classes/ViewRelated/Domains/Domain registration/RegisterDomainSuggestions/RegisterDomainCoordinator.swift @@ -137,13 +137,22 @@ class RegisterDomainCoordinator { // MARK: Helpers private func purchaseDomain(for site: Blog?, on viewController: UIViewController, completion: @escaping (Result) -> Void) { + guard let domain else { + completion(.failure(Error.noDomainWhenCreatingCart)) + return + } + if let site, site.canRegisterDomainWithPaidPlan { + self.presentDomainRegistration(for: site, domain: domain, on: viewController) + completion(.success(())) + return + } self.createCart { [weak self] result in guard let self else { return } switch result { case .success(let domain): - if let site, site.canRegisterDomainWithPaidPlan { + if let site, !site.hasDomains { self.domainAddedToCartAndLinkedToSiteCallback?(viewController, domain.domainName, site) } else { self.presentCheckoutWebview(on: viewController, title: TextContent.checkoutTitle) @@ -235,6 +244,24 @@ class RegisterDomainCoordinator { } } + private func presentDomainRegistration( + for site: Blog, + domain: DomainSuggestion, + on viewController: UIViewController + ) { + guard let siteID = site.dotComID?.intValue else { + return + } + let destination = RegisterDomainDetailsViewController() + destination.viewModel = RegisterDomainDetailsViewModel(siteID: siteID, domain: domain) { [weak self] name in + guard let self = self else { + return + } + self.domainPurchasedCallback?(viewController, name) + self.trackDomainPurchasingCompleted() + } + } + /// Handles URL changes in the web view. We only allow the user to stay within certain URLs. Falling outside these URLs /// results in the web view being dismissed. This method also handles the success condition for a successful domain registration /// through said web view. From 8923eaf857312c6c7d7f89ecdc0ca0114f28a764 Mon Sep 17 00:00:00 2001 From: Salim Braksa Date: Wed, 17 Jan 2024 15:44:41 +0100 Subject: [PATCH 4/7] Add documentation for the purchaseDomain method --- .../RegisterDomainCoordinator.swift | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/WordPress/Classes/ViewRelated/Domains/Domain registration/RegisterDomainSuggestions/RegisterDomainCoordinator.swift b/WordPress/Classes/ViewRelated/Domains/Domain registration/RegisterDomainSuggestions/RegisterDomainCoordinator.swift index f9751efab733..35e6945658f5 100644 --- a/WordPress/Classes/ViewRelated/Domains/Domain registration/RegisterDomainSuggestions/RegisterDomainCoordinator.swift +++ b/WordPress/Classes/ViewRelated/Domains/Domain registration/RegisterDomainSuggestions/RegisterDomainCoordinator.swift @@ -136,6 +136,18 @@ class RegisterDomainCoordinator { // MARK: Helpers + /// Initiates the process of purchasing a domain for a specified site. + /// + /// - Parameters: + /// - site: The blog site for which the domain is being purchased. Optional. + /// - viewController: The UIViewController from which the domain registration or checkout process is presented. + /// - completion: A closure that is called upon the completion of the purchase attempt. + /// It returns a `Result` indicating either success or failure. + /// + /// The method follows this logic: + /// - The "Register Domain" screen is presented when `site.canRegisterDomainWithPaidPlan` is `true`. + /// - If the site does not have any domains (`!site.hasDomains`), the Plans web view is shown. + /// - For sites with existing domains, the Checkout web view is presented, private func purchaseDomain(for site: Blog?, on viewController: UIViewController, completion: @escaping (Result) -> Void) { guard let domain else { completion(.failure(Error.noDomainWhenCreatingCart)) From d5e405b642c6bb7a25bf53e5a01f1dffa5495532 Mon Sep 17 00:00:00 2001 From: Salim Braksa Date: Thu, 25 Jan 2024 18:40:30 +0100 Subject: [PATCH 5/7] Implement private method responsible for presenting the Plans flow --- .../RegisterDomainCoordinator.swift | 64 +++++++++++++------ 1 file changed, 44 insertions(+), 20 deletions(-) diff --git a/WordPress/Classes/ViewRelated/Domains/Domain registration/RegisterDomainSuggestions/RegisterDomainCoordinator.swift b/WordPress/Classes/ViewRelated/Domains/Domain registration/RegisterDomainSuggestions/RegisterDomainCoordinator.swift index 35e6945658f5..4dc7f9233b0f 100644 --- a/WordPress/Classes/ViewRelated/Domains/Domain registration/RegisterDomainSuggestions/RegisterDomainCoordinator.swift +++ b/WordPress/Classes/ViewRelated/Domains/Domain registration/RegisterDomainSuggestions/RegisterDomainCoordinator.swift @@ -136,7 +136,7 @@ class RegisterDomainCoordinator { // MARK: Helpers - /// Initiates the process of purchasing a domain for a specified site. + /// Initiates the process of purchasing a domain with or without a site. /// /// - Parameters: /// - site: The blog site for which the domain is being purchased. Optional. @@ -165,7 +165,7 @@ class RegisterDomainCoordinator { switch result { case .success(let domain): if let site, !site.hasDomains { - self.domainAddedToCartAndLinkedToSiteCallback?(viewController, domain.domainName, site) + self.presentPlansWebview(for: site, domain: domain, on: viewController) } else { self.presentCheckoutWebview(on: viewController, title: TextContent.checkoutTitle) } @@ -194,6 +194,8 @@ class RegisterDomainCoordinator { }) } + // MARK: - Presenting Checkout Web View + private func presentCheckoutWebview(on viewController: UIViewController, title: String?) { guard let domain, @@ -256,24 +258,6 @@ class RegisterDomainCoordinator { } } - private func presentDomainRegistration( - for site: Blog, - domain: DomainSuggestion, - on viewController: UIViewController - ) { - guard let siteID = site.dotComID?.intValue else { - return - } - let destination = RegisterDomainDetailsViewController() - destination.viewModel = RegisterDomainDetailsViewModel(siteID: siteID, domain: domain) { [weak self] name in - guard let self = self else { - return - } - self.domainPurchasedCallback?(viewController, name) - self.trackDomainPurchasingCompleted() - } - } - /// Handles URL changes in the web view. We only allow the user to stay within certain URLs. Falling outside these URLs /// results in the web view being dismissed. This method also handles the success condition for a successful domain registration /// through said web view. @@ -305,6 +289,46 @@ class RegisterDomainCoordinator { } } + // MARK: - Presenting Domain Registration View + + private func presentDomainRegistration( + for site: Blog, + domain: DomainSuggestion, + on viewController: UIViewController + ) { + guard let siteID = site.dotComID?.intValue else { + return + } + let destination = RegisterDomainDetailsViewController() + destination.viewModel = RegisterDomainDetailsViewModel(siteID: siteID, domain: domain) { [weak self] name in + guard let self = self else { + return + } + self.domainPurchasedCallback?(viewController, name) + self.trackDomainPurchasingCompleted() + } + } + + // MARK: - Presenting Plans + + private func presentPlansWebview( + for site: Blog, + domain: DomainSuggestion, + on viewController: UIViewController + ) { + let presentPlansFlow = FreeToPaidPlansCoordinator.plansFlowAfterDomainAddedToCartBlock( + customTitle: nil, + analyticsSource: analyticsSource + ) { [weak self] controller, domain in + guard let self else { + return + } + self.domainPurchasedCallback?(controller, domain) + self.trackDomainPurchasingCompleted() + } + presentPlansFlow(viewController, domain.domainName, site) + } + // MARK: - Tracks private func track(_ event: WPAnalyticsEvent, properties: [AnyHashable: Any]? = nil) { From 3eb3edb2383178da7235880633d5361dde79eca1 Mon Sep 17 00:00:00 2001 From: Salim Braksa Date: Thu, 25 Jan 2024 18:40:30 +0100 Subject: [PATCH 6/7] Implement private method responsible for presenting the Plans flow --- .../RegisterDomainCoordinator.swift | 66 +++++++++++++------ 1 file changed, 45 insertions(+), 21 deletions(-) diff --git a/WordPress/Classes/ViewRelated/Domains/Domain registration/RegisterDomainSuggestions/RegisterDomainCoordinator.swift b/WordPress/Classes/ViewRelated/Domains/Domain registration/RegisterDomainSuggestions/RegisterDomainCoordinator.swift index 35e6945658f5..5fa083fba29f 100644 --- a/WordPress/Classes/ViewRelated/Domains/Domain registration/RegisterDomainSuggestions/RegisterDomainCoordinator.swift +++ b/WordPress/Classes/ViewRelated/Domains/Domain registration/RegisterDomainSuggestions/RegisterDomainCoordinator.swift @@ -83,7 +83,7 @@ class RegisterDomainCoordinator { createCart { [weak self] result in switch result { case .success(let domain): - self?.domainAddedToCartAndLinkedToSiteCallback?(viewController, domain.domainName, blog) + self?.presentPlansWebview(for: blog, domain: domain, on: viewController) onSuccess() case .failure: onFailure() @@ -136,7 +136,7 @@ class RegisterDomainCoordinator { // MARK: Helpers - /// Initiates the process of purchasing a domain for a specified site. + /// Initiates the process of purchasing a domain with or without a site. /// /// - Parameters: /// - site: The blog site for which the domain is being purchased. Optional. @@ -165,7 +165,7 @@ class RegisterDomainCoordinator { switch result { case .success(let domain): if let site, !site.hasDomains { - self.domainAddedToCartAndLinkedToSiteCallback?(viewController, domain.domainName, site) + self.presentPlansWebview(for: site, domain: domain, on: viewController) } else { self.presentCheckoutWebview(on: viewController, title: TextContent.checkoutTitle) } @@ -194,6 +194,8 @@ class RegisterDomainCoordinator { }) } + // MARK: - Presenting Checkout Web View + private func presentCheckoutWebview(on viewController: UIViewController, title: String?) { guard let domain, @@ -256,24 +258,6 @@ class RegisterDomainCoordinator { } } - private func presentDomainRegistration( - for site: Blog, - domain: DomainSuggestion, - on viewController: UIViewController - ) { - guard let siteID = site.dotComID?.intValue else { - return - } - let destination = RegisterDomainDetailsViewController() - destination.viewModel = RegisterDomainDetailsViewModel(siteID: siteID, domain: domain) { [weak self] name in - guard let self = self else { - return - } - self.domainPurchasedCallback?(viewController, name) - self.trackDomainPurchasingCompleted() - } - } - /// Handles URL changes in the web view. We only allow the user to stay within certain URLs. Falling outside these URLs /// results in the web view being dismissed. This method also handles the success condition for a successful domain registration /// through said web view. @@ -305,6 +289,46 @@ class RegisterDomainCoordinator { } } + // MARK: - Presenting Domain Registration View + + private func presentDomainRegistration( + for site: Blog, + domain: DomainSuggestion, + on viewController: UIViewController + ) { + guard let siteID = site.dotComID?.intValue else { + return + } + let destination = RegisterDomainDetailsViewController() + destination.viewModel = RegisterDomainDetailsViewModel(siteID: siteID, domain: domain) { [weak self] name in + guard let self = self else { + return + } + self.domainPurchasedCallback?(viewController, name) + self.trackDomainPurchasingCompleted() + } + } + + // MARK: - Presenting Plans + + private func presentPlansWebview( + for site: Blog, + domain: DomainSuggestion, + on viewController: UIViewController + ) { + let presentPlansFlow = FreeToPaidPlansCoordinator.plansFlowAfterDomainAddedToCartBlock( + customTitle: nil, + analyticsSource: analyticsSource + ) { [weak self] controller, domain in + guard let self else { + return + } + self.domainPurchasedCallback?(controller, domain) + self.trackDomainPurchasingCompleted() + } + presentPlansFlow(viewController, domain.domainName, site) + } + // MARK: - Tracks private func track(_ event: WPAnalyticsEvent, properties: [AnyHashable: Any]? = nil) { From 6398d0ae3ace7610a54b5548768e73a032d3dd90 Mon Sep 17 00:00:00 2001 From: Salim Braksa Date: Thu, 25 Jan 2024 18:49:24 +0100 Subject: [PATCH 7/7] Remove domainAddedToCartAndLinkedToSiteCallback property from RegisterDomainCoordinator --- .../FreeToPaidPlansCoordinator.swift | 4 ---- .../RegisterDomainCoordinator.swift | 10 +++++----- .../Domains/Views/DomainsDashboardFactory.swift | 12 +----------- .../AllDomainsAddDomainCoordinator.swift | 9 --------- 4 files changed, 6 insertions(+), 29 deletions(-) diff --git a/WordPress/Classes/ViewRelated/Blog/Blog Dashboard/Cards/Free to Paid Plans/FreeToPaidPlansCoordinator.swift b/WordPress/Classes/ViewRelated/Blog/Blog Dashboard/Cards/Free to Paid Plans/FreeToPaidPlansCoordinator.swift index af025385e61c..fe9e2ad25134 100644 --- a/WordPress/Classes/ViewRelated/Blog/Blog Dashboard/Cards/Free to Paid Plans/FreeToPaidPlansCoordinator.swift +++ b/WordPress/Classes/ViewRelated/Blog/Blog Dashboard/Cards/Free to Paid Plans/FreeToPaidPlansCoordinator.swift @@ -34,10 +34,6 @@ import SwiftUI PlansTracker.trackPurchaseResult(source: "plan_selection") } - let domainAddedToCart = plansFlowAfterDomainAddedToCartBlock(customTitle: nil, purchaseCallback: purchaseCallback) - - coordinator.domainAddedToCartAndLinkedToSiteCallback = domainAddedToCart - let navigationController = UINavigationController(rootViewController: domainSuggestionsViewController) dashboardViewController.present(navigationController, animated: true) } diff --git a/WordPress/Classes/ViewRelated/Domains/Domain registration/RegisterDomainSuggestions/RegisterDomainCoordinator.swift b/WordPress/Classes/ViewRelated/Domains/Domain registration/RegisterDomainSuggestions/RegisterDomainCoordinator.swift index 5fa083fba29f..95c84c03ccfa 100644 --- a/WordPress/Classes/ViewRelated/Domains/Domain registration/RegisterDomainSuggestions/RegisterDomainCoordinator.swift +++ b/WordPress/Classes/ViewRelated/Domains/Domain registration/RegisterDomainSuggestions/RegisterDomainCoordinator.swift @@ -13,14 +13,13 @@ class RegisterDomainCoordinator { typealias DomainPurchasedCallback = ((UIViewController, String) -> Void) typealias DomainAddedToCartCallback = ((UIViewController, String, Blog) -> Void) - // MARK: - Dependencies + // MARK: Dependencies private let domainRegistrationService: RegisterDomainDetailsServiceProxyProtocol + private let crashLogger: CrashLogging // MARK: Variables - private let crashLogger: CrashLogging - let analyticsSource: String // TODO: This can cause Core Data crashes. Pass `NSManagedObjectID` instead. @@ -29,10 +28,11 @@ class RegisterDomainCoordinator { var domain: DomainSuggestion? var domainPurchasedCallback: DomainPurchasedCallback? - var domainAddedToCartAndLinkedToSiteCallback: DomainAddedToCartCallback? private var webViewURLChangeObservation: NSKeyValueObservation? + // MARK: - Init + /// Initializes a `RegisterDomainCoordinator` with the specified parameters. /// /// - Parameters: @@ -52,7 +52,7 @@ class RegisterDomainCoordinator { self.domainRegistrationService = domainRegistrationService } - // MARK: Public Functions + // MARK: - Public Functions /// Adds the selected domain to the cart then launches the checkout webview. /// This flow support purchasing domains only, without plans. diff --git a/WordPress/Classes/ViewRelated/Domains/Views/DomainsDashboardFactory.swift b/WordPress/Classes/ViewRelated/Domains/Views/DomainsDashboardFactory.swift index 0e7d2b10d0ef..4a9e54d5e11c 100644 --- a/WordPress/Classes/ViewRelated/Domains/Views/DomainsDashboardFactory.swift +++ b/WordPress/Classes/ViewRelated/Domains/Views/DomainsDashboardFactory.swift @@ -9,7 +9,7 @@ struct DomainsDashboardFactory { } static func makeDomainsSuggestionViewController(blog: Blog, domainSelectionType: DomainSelectionType, onDismiss: @escaping () -> Void) -> DomainSelectionViewController { - let coordinator = RegisterDomainCoordinator(site: blog) + let coordinator = RegisterDomainCoordinator(site: blog, analyticsSource: "site_domains") let viewController = DomainSelectionViewController( service: DomainsServiceAdapter(coreDataStack: ContextManager.shared), domainSelectionType: domainSelectionType, @@ -29,16 +29,6 @@ struct DomainsDashboardFactory { viewController.present(controller, animated: true) } - let domainAddedToCart = FreeToPaidPlansCoordinator.plansFlowAfterDomainAddedToCartBlock( - customTitle: nil, - analyticsSource: "site_domains" - ) { [weak coordinator] controller, domain in - coordinator?.domainPurchasedCallback?(controller, domain) - coordinator?.trackDomainPurchasingCompleted() - } - - coordinator.domainAddedToCartAndLinkedToSiteCallback = domainAddedToCart - return viewController } } diff --git a/WordPress/Classes/ViewRelated/Me/All Domains/Coordinators/AllDomainsAddDomainCoordinator.swift b/WordPress/Classes/ViewRelated/Me/All Domains/Coordinators/AllDomainsAddDomainCoordinator.swift index a83566cba9ad..014a6848ddf6 100644 --- a/WordPress/Classes/ViewRelated/Me/All Domains/Coordinators/AllDomainsAddDomainCoordinator.swift +++ b/WordPress/Classes/ViewRelated/Me/All Domains/Coordinators/AllDomainsAddDomainCoordinator.swift @@ -17,16 +17,7 @@ import Foundation } } - let domainAddedToCart = FreeToPaidPlansCoordinator.plansFlowAfterDomainAddedToCartBlock( - customTitle: nil, - analyticsSource: analyticsSource - ) { [weak coordinator] controller, domain in - domainPurchasedCallback(controller, domain) - coordinator?.trackDomainPurchasingCompleted() - } - coordinator.domainPurchasedCallback = domainPurchasedCallback // For no site flow (domain only) - coordinator.domainAddedToCartAndLinkedToSiteCallback = domainAddedToCart // For existing site flow (plans) let navigationController = UINavigationController(rootViewController: domainSuggestionsViewController) navigationController.isModalInPresentation = true