diff --git a/iphone/Maps/Bookmarks/Catalog/CatalogWebViewController.swift b/iphone/Maps/Bookmarks/Catalog/CatalogWebViewController.swift index b9dee45847..8340d3148f 100644 --- a/iphone/Maps/Bookmarks/Catalog/CatalogWebViewController.swift +++ b/iphone/Maps/Bookmarks/Catalog/CatalogWebViewController.swift @@ -207,7 +207,7 @@ final class CatalogWebViewController: WebViewController { let subscribeViewController = SubscriptionViewBuilder.build(type: type, parentViewController: self, source: kStatWebView, - openCatalog: false) { [weak self] (success) in + successDialog: .success) { [weak self] (success) in if (success) { self?.webView.reloadFromOrigin() } @@ -365,7 +365,10 @@ final class CatalogWebViewController: WebViewController { let purchase = InAppPurchase.paidRoutePurchase(serverId: productInfo.id, productId: productId) - let stats = InAppPurchase.paidRouteStatistics(serverId: productInfo.id, productId: productId) + let testGroup = PromoCampaignManager.manager().paidRoutesSubscriptionCampaign.testGroupStatName + let stats = InAppPurchase.paidRouteStatistics(serverId: productInfo.id, + productId: productId, + testGroup: testGroup) let paymentVC = PaidRouteViewController(name: productInfo.name, author: productInfo.author, imageUrl: URL(string: productInfo.imageUrl ?? ""), diff --git a/iphone/Maps/Bookmarks/Catalog/PaidRouteViewController.swift b/iphone/Maps/Bookmarks/Catalog/PaidRouteViewController.swift index 1b634a2ef9..5d31fa4ad7 100644 --- a/iphone/Maps/Bookmarks/Catalog/PaidRouteViewController.swift +++ b/iphone/Maps/Bookmarks/Catalog/PaidRouteViewController.swift @@ -29,6 +29,8 @@ class PaidRouteViewController: MWMViewController { private var product: IStoreProduct? private var subscription: ISubscription? private let subscriptionManager: ISubscriptionManager + private let subscriptionType: SubscriptionGroupType + private let paidRoutesSubscriptionCampaign = PromoCampaignManager.manager().paidRoutesSubscriptionCampaign override var supportedInterfaceOrientations: UIInterfaceOrientationMask { get { return [.portrait] } @@ -45,6 +47,7 @@ class PaidRouteViewController: MWMViewController { self.imageUrl = imageUrl self.purchase = purchase self.statistics = statistics + self.subscriptionType = subscriptionType switch subscriptionType { case .sightseeing: self.subscriptionManager = InAppPurchase.bookmarksSubscriptionManager @@ -52,7 +55,9 @@ class PaidRouteViewController: MWMViewController { self.subscriptionManager = InAppPurchase.allPassSubscriptionManager } super.init(nibName: nil, bundle: nil) - self.subscriptionManager.addListener(self) + if paidRoutesSubscriptionCampaign.actionType == .instant { + self.subscriptionManager.addListener(self) + } } required init?(coder aDecoder: NSCoder) { @@ -60,7 +65,9 @@ class PaidRouteViewController: MWMViewController { } deinit { - subscriptionManager.removeListener(self) + if paidRoutesSubscriptionCampaign.actionType == .instant { + subscriptionManager.removeListener(self) + } } override func viewDidLoad() { @@ -91,32 +98,43 @@ class PaidRouteViewController: MWMViewController { dispatchGroup.notify(queue: .main) { [weak self] in self?.loadingIndicator.stopAnimating() - guard let product = product, let subscriptions = subscriptions else { - MWMAlertViewController.activeAlert().presentInfoAlert(L("price_error_title"), - text: L("price_error_subtitle")) - if let s = self { s.delegate?.didCancelPurchase(s) } - return + guard let product = product, + let subscriptions = subscriptions, + let subscriptionGroup: SubscriptionGroup? = SubscriptionGroup(subscriptions: subscriptions), + let actionType = self?.paidRoutesSubscriptionCampaign.actionType, + let subscriptionType = self?.subscriptionType, + let subscriptionItem = actionType == .instant ? subscriptionGroup?[.year] : subscriptionGroup?[.month] else { + MWMAlertViewController.activeAlert().presentInfoAlert(L("price_error_title"), + text: L("price_error_subtitle")) + if let s = self { s.delegate?.didCancelPurchase(s) } + return } self?.productNameLabel.text = product.localizedName self?.buyButton.setTitle(String(coreFormat: L("buy_btn"), arguments: [product.formattedPrice]), for: .normal) self?.buyButton.isHidden = false - let idx = Int(arc4random() % 2) - let s = subscriptions[idx] - let formatter = NumberFormatter() - formatter.locale = s.priceLocale + formatter.locale = subscriptionItem.priceLocale formatter.numberStyle = .currency - let titleFormat = L((s.period == .year) ? "buy_btn_for_subscription_ios_only_year_version_2" - : "buy_btn_for_subscription_ios_only_mo_version_2") - let title = String(coreFormat: titleFormat, arguments: [formatter.string(from: s.price) ?? ""]) + var titleFormat: String = "" + switch actionType { + case .instant: + titleFormat = subscriptionType == .allPass ? "buy_btn_for_subscription_3" + : "buy_btn_for_subscription_ios_only_year_version_2" + case .window: + titleFormat = subscriptionType == .allPass ? "buy_btn_for_subscription_version_3" + : "buy_btn_for_subscription_ios_only_mo_version_2" + + } + let title = String(coreFormat: L(titleFormat), arguments: [formatter.string(from: subscriptionItem.price) ?? ""]) self?.subscribeButton.setTitle(title, for: .normal) self?.subscribeButton.isEnabled = true - self?.subscription = s + self?.subscription = subscriptionItem.subscription Statistics.logEvent(kStatInappShow, withParameters: [kStatVendor : self?.subscriptionManager.vendorId ?? "", - kStatProduct : s.productId, - kStatPurchase : self?.subscriptionManager.serverId ?? ""], + kStatProduct : subscriptionItem.productId, + kStatPurchase : self?.subscriptionManager.serverId ?? "", + kStatTestGroup: self?.paidRoutesSubscriptionCampaign.testGroupStatName ?? ""], with: .realtime) } @@ -197,6 +215,16 @@ class PaidRouteViewController: MWMViewController { } @IBAction func onSubscribe(_ sender: UIButton) { + let type = PromoCampaignManager.manager().paidRoutesSubscriptionCampaign.actionType + switch type { + case .instant: + onInstantSubscribe() + case .window: + onWindowSubscribe() + } + } + + private func onInstantSubscribe() { guard let subscription = subscription else { assertionFailure("Subscription can't be nil") return @@ -221,6 +249,18 @@ class PaidRouteViewController: MWMViewController { } } + private func onWindowSubscribe() { + let subscriptionView = SubscriptionViewBuilder.build(type: subscriptionType, + parentViewController: self, + source: kStatCard, + successDialog: .none) {[weak self] (success) in + if success, self != nil { + self?.delegate?.didCompleteSubscription(self!) + } + } + self.present(subscriptionView, animated: true, completion: nil) + } + @IBAction func onCancel(_ sender: UIButton) { statistics.logCancel() Statistics.logEvent(kStatInappCancel, withParameters: [kStatPurchase : subscriptionManager.serverId]) @@ -251,7 +291,7 @@ extension PaidRouteViewController : SubscriptionManagerListener { loadingView.isHidden = true if (isValid) { delegate?.didCompleteSubscription(self) - let successDialog = SubscriptionSuccessViewController(.sightseeing) { [weak self] in + let successDialog = SubscriptionSuccessViewController(subscriptionType) { [weak self] in self?.dismiss(animated: true) } present(successDialog, animated: true) diff --git a/iphone/Maps/Bookmarks/Catalog/Subscription/SubscriptionViewBuilder.swift b/iphone/Maps/Bookmarks/Catalog/Subscription/SubscriptionViewBuilder.swift index 7ad98ca90d..c5100056a5 100644 --- a/iphone/Maps/Bookmarks/Catalog/Subscription/SubscriptionViewBuilder.swift +++ b/iphone/Maps/Bookmarks/Catalog/Subscription/SubscriptionViewBuilder.swift @@ -1,8 +1,14 @@ class SubscriptionViewBuilder { + enum SuccessDialog { + case goToCatalog + case success + case none + } + static func build(type: SubscriptionGroupType, parentViewController: UIViewController, source: String, - openCatalog: Bool, + successDialog: SuccessDialog, completion: ((Bool) -> Void)?) -> UIViewController { let subscribeViewController: BaseSubscriptionViewController switch type { @@ -13,9 +19,11 @@ class SubscriptionViewBuilder { } subscribeViewController.source = source subscribeViewController.onSubscribe = { - completion?(true); - parentViewController.dismiss(animated: true) - if openCatalog { + parentViewController.dismiss(animated: true) { + completion?(true); + } + switch successDialog { + case .goToCatalog: let successDialog = SubscriptionGoToCatalogViewController(type, onOk: { parentViewController.dismiss(animated: true) let webViewController = CatalogWebViewController.catalogFromAbsoluteUrl(nil, utm: .none) @@ -24,16 +32,19 @@ class SubscriptionViewBuilder { parentViewController.dismiss(animated: true) } parentViewController.present(successDialog, animated: true) - } else { + case .success: let successDialog = SubscriptionSuccessViewController(type) { parentViewController.dismiss(animated: true) } parentViewController.present(successDialog, animated: true) + case .none: + break; } } subscribeViewController.onCancel = { - completion?(false) - parentViewController.dismiss(animated: true) + parentViewController.dismiss(animated: true) { + completion?(false) + } } return subscribeViewController } diff --git a/iphone/Maps/Common/Statistics/StatisticsStrings.h b/iphone/Maps/Common/Statistics/StatisticsStrings.h index 813944044d..5326bf77aa 100644 --- a/iphone/Maps/Common/Statistics/StatisticsStrings.h +++ b/iphone/Maps/Common/Statistics/StatisticsStrings.h @@ -77,6 +77,7 @@ static NSString * const kStatCatalogOpen = @"Bookmarks_Downloaded_Catalogue_open static NSString * const kStatCatalogue = @"catalogue"; static NSString * const kStatCataloguePath = @"guides_page"; static NSString * const kStatDone = @"done"; +static NSString * const kStatCard = @"card"; static NSString * const kStatCarplay = @"carplay"; static NSString * const kStatCarplayActivated = @"CarPlay_activated"; static NSString * const kStatCarplayDeactivated = @"CarPlay_deactivated"; @@ -470,6 +471,9 @@ static NSString * const kStatTable = @"Table"; static NSString * const kStatTags = @"tags"; static NSString * const kStatTarget = @"target"; static NSString * const kStatTaxi = @"Taxi"; +static NSString * const kStatTestGroup = @"test_group"; +static NSString * const kStatTestGroup95PurchaseFlow1 = @"95_ios_single_purchase_flow1"; +static NSString * const kStatTestGroup95PurchaseFlow2 = @"95_ios_single_purchase_flow2"; static NSString * const kStatThingsToDo = @"Things to do"; static NSString * const kStatTipsTricksClick = @"TipsTricks_click"; static NSString * const kStatTipsTricksClose = @"TipsTricks_close"; diff --git a/iphone/Maps/Core/DeepLink/Strategies/DeepLinkSubscriptionStrategy.swift b/iphone/Maps/Core/DeepLink/Strategies/DeepLinkSubscriptionStrategy.swift index 7c6c5f3306..8ad2d91c52 100644 --- a/iphone/Maps/Core/DeepLink/Strategies/DeepLinkSubscriptionStrategy.swift +++ b/iphone/Maps/Core/DeepLink/Strategies/DeepLinkSubscriptionStrategy.swift @@ -20,7 +20,7 @@ class DeepLinkSubscriptionStrategy: IDeepLinkHandlerStrategy { let subscriptionViewController = SubscriptionViewBuilder.build(type: type, parentViewController: mapViewController, source: kStatDeeplink, - openCatalog: true, + successDialog: .goToCatalog, completion: nil) mapViewController.present(subscriptionViewController, animated: true, completion: nil) sendStatisticsOnSuccess(type: kStatSubscription) diff --git a/iphone/Maps/Core/InappPurchase/Impl/PaidRouteStatistics.swift b/iphone/Maps/Core/InappPurchase/Impl/PaidRouteStatistics.swift index 99a7105671..240f13e63c 100644 --- a/iphone/Maps/Core/InappPurchase/Impl/PaidRouteStatistics.swift +++ b/iphone/Maps/Core/InappPurchase/Impl/PaidRouteStatistics.swift @@ -2,17 +2,23 @@ class PaidRouteStatistics: IPaidRouteStatistics { let serverId: String let productId: String let vendor: String + let testGroup: String - init(serverId: String, productId: String, vendor: String) { + init(serverId: String, + productId: String, + vendor: String, + testGroup: String) { self.serverId = serverId self.productId = productId self.vendor = vendor + self.testGroup = testGroup } func logPreviewShow() { logEvent(kStatInappShow, withParameters: [kStatVendor: vendor, kStatProduct: productId, - kStatPurchase: serverId], + kStatPurchase: serverId, + kStatTestGroup: testGroup], withChannel: .realtime) } diff --git a/iphone/Maps/Core/InappPurchase/InAppPurchase.swift b/iphone/Maps/Core/InappPurchase/InAppPurchase.swift index 82260c8e1e..a6b4db62a2 100644 --- a/iphone/Maps/Core/InappPurchase/InAppPurchase.swift +++ b/iphone/Maps/Core/InappPurchase/InAppPurchase.swift @@ -12,8 +12,9 @@ final class InAppPurchase: NSObject { } static func paidRouteStatistics(serverId: String, - productId: String) -> IPaidRouteStatistics { - return PaidRouteStatistics(serverId: serverId, productId: productId, vendor: BOOKMARKS_VENDOR) + productId: String, + testGroup: String) -> IPaidRouteStatistics { + return PaidRouteStatistics(serverId: serverId, productId: productId, vendor: BOOKMARKS_VENDOR, testGroup: testGroup) } @objc diff --git a/iphone/Maps/Core/PromoCampaign/PaidRoutesSubscriptionCampaign/PaidRoutesSubscriptionCampaign.swift b/iphone/Maps/Core/PromoCampaign/PaidRoutesSubscriptionCampaign/PaidRoutesSubscriptionCampaign.swift new file mode 100644 index 0000000000..a46a208d2a --- /dev/null +++ b/iphone/Maps/Core/PromoCampaign/PaidRoutesSubscriptionCampaign/PaidRoutesSubscriptionCampaign.swift @@ -0,0 +1,27 @@ +@objc class PaidRoutesSubscriptionCampaign: NSObject, IPromoCampaign { + enum SubscribeActionType: Int { + case instant = 0 + case window + } + + let actionType: SubscribeActionType + lazy var testGroupStatName: String = { + return actionType == .instant ? kStatTestGroup95PurchaseFlow1 : kStatTestGroup95PurchaseFlow2 + }() + + var enabled: Bool { + return true + } + + required override init() { + let storageKey = "\(PaidRoutesSubscriptionCampaign.Type.self)" + if let stored = UserDefaults.standard.value(forKey: storageKey) as? Int, + let action = SubscribeActionType(rawValue: stored) { + actionType = action; + } else { + let stored = abs(Alohalytics.installationId().hashValue) % 2 + actionType = SubscribeActionType(rawValue: stored) ?? .instant + UserDefaults.standard.set(stored, forKey: storageKey) + } + } +} diff --git a/iphone/Maps/Core/PromoCampaign/PromoCampaignManager.swift b/iphone/Maps/Core/PromoCampaign/PromoCampaignManager.swift index 038be2e812..2028a732ed 100644 --- a/iphone/Maps/Core/PromoCampaign/PromoCampaignManager.swift +++ b/iphone/Maps/Core/PromoCampaign/PromoCampaignManager.swift @@ -1,6 +1,7 @@ @objc protocol IPromoCampaignManager { @objc var promoDiscoveryCampaign: PromoDiscoveryCampaign { get } @objc var promoAfterBookingCampaign: PromoAfterBookingCampaign { get } + @objc var paidRoutesSubscriptionCampaign: PaidRoutesSubscriptionCampaign { get } } @objc class PromoCampaignManager: NSObject, IPromoCampaignManager { @@ -17,4 +18,8 @@ @objc lazy var promoAfterBookingCampaign: PromoAfterBookingCampaign = { return PromoAfterBookingCampaign() }() + + @objc lazy var paidRoutesSubscriptionCampaign: PaidRoutesSubscriptionCampaign = { + return PaidRoutesSubscriptionCampaign() + }() } diff --git a/iphone/Maps/Core/Subscriptions/SubscriptionGroup.swift b/iphone/Maps/Core/Subscriptions/SubscriptionGroup.swift index c90a9f62e6..b184ba138f 100644 --- a/iphone/Maps/Core/Subscriptions/SubscriptionGroup.swift +++ b/iphone/Maps/Core/Subscriptions/SubscriptionGroup.swift @@ -18,19 +18,15 @@ self = .allPass return } - let subscriptionGroup = urlComponents.queryItems? + let subscriptionGroups = urlComponents.queryItems? .filter({ $0.name == "groups" }) .map({ $0.value ?? "" }) - .first(where: { - $0 == MWMPurchaseManager.allPassSubscriptionServerId() || - $0 == MWMPurchaseManager.bookmarksSubscriptionServerId() - }) - switch subscriptionGroup { - case MWMPurchaseManager.bookmarksSubscriptionServerId(): - self = .sightseeing - case MWMPurchaseManager.allPassSubscriptionServerId(): + + if subscriptionGroups?.first(where: { $0 == MWMPurchaseManager.allPassSubscriptionServerId() }) != nil { self = .allPass - default: + } else if subscriptionGroups?.first(where: { $0 == MWMPurchaseManager.bookmarksSubscriptionServerId() }) != nil { + self = .sightseeing + } else { self = .allPass } } diff --git a/iphone/Maps/Maps.xcodeproj/project.pbxproj b/iphone/Maps/Maps.xcodeproj/project.pbxproj index a4c2522f99..e7167ea409 100644 --- a/iphone/Maps/Maps.xcodeproj/project.pbxproj +++ b/iphone/Maps/Maps.xcodeproj/project.pbxproj @@ -573,7 +573,8 @@ 6B653B951C7F2DE4007BEFC5 /* cuisine-strings in Resources */ = {isa = PBXBuildFile; fileRef = 6B653B931C7F2DE4007BEFC5 /* cuisine-strings */; }; 6B9978361C89A316003B8AA0 /* editor.config in Resources */ = {isa = PBXBuildFile; fileRef = 6B9978341C89A316003B8AA0 /* editor.config */; }; 7BD07E4A8D71CA41F082BEC7 /* Pods_MAPS_ME.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 58E5736C23FC4E77509C9946 /* Pods_MAPS_ME.framework */; }; - 9917D1852397ECC800A7E06E /* IPadModalPresentationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9917D1842397ECC800A7E06E /* IPadModalPresentationController.swift */; }; + 9917D17D2396793A00A7E06E /* PaidRoutesSubscriptionCampaign.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9917D17C2396793A00A7E06E /* PaidRoutesSubscriptionCampaign.swift */; }; + 9917D17F2397B1D600A7E06E /* IPadModalPresentationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9917D17E2397B1D600A7E06E /* IPadModalPresentationController.swift */; }; 991CE2BF2371D349009EB02A /* PromoCampaignManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 991CE2BA2371D349009EB02A /* PromoCampaignManager.swift */; }; 991CE2C02371D349009EB02A /* PromoCampaign.swift in Sources */ = {isa = PBXBuildFile; fileRef = 991CE2BB2371D349009EB02A /* PromoCampaign.swift */; }; 991CE2C22371D349009EB02A /* PromoDiscoveryCampaign.swift in Sources */ = {isa = PBXBuildFile; fileRef = 991CE2BE2371D349009EB02A /* PromoDiscoveryCampaign.swift */; }; @@ -1645,7 +1646,8 @@ 8D1107310486CEB800E47090 /* MAPSME.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = MAPSME.plist; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = ""; }; 978D4A30199A11E600D72CA7 /* faq.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; name = faq.html; path = ../../data/faq.html; sourceTree = ""; }; 97A5967E19B9CD47007A963F /* copyright.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; name = copyright.html; path = ../../data/copyright.html; sourceTree = ""; }; - 9917D1842397ECC800A7E06E /* IPadModalPresentationController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IPadModalPresentationController.swift; sourceTree = ""; }; + 9917D17C2396793A00A7E06E /* PaidRoutesSubscriptionCampaign.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PaidRoutesSubscriptionCampaign.swift; sourceTree = ""; }; + 9917D17E2397B1D600A7E06E /* IPadModalPresentationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IPadModalPresentationController.swift; sourceTree = ""; }; 991CE2BA2371D349009EB02A /* PromoCampaignManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PromoCampaignManager.swift; sourceTree = ""; }; 991CE2BB2371D349009EB02A /* PromoCampaign.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PromoCampaign.swift; sourceTree = ""; }; 991CE2BE2371D349009EB02A /* PromoDiscoveryCampaign.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PromoDiscoveryCampaign.swift; sourceTree = ""; }; @@ -3631,6 +3633,7 @@ 9917D1842397ECC800A7E06E /* IPadModalPresentationController.swift */, 47E3C7282111E614008B3B27 /* FadeInAnimatedTransitioning.swift */, 47E3C72A2111E62A008B3B27 /* FadeOutAnimatedTransitioning.swift */, + 9917D17E2397B1D600A7E06E /* IPadModalPresentationController.swift */, 47E3C72C2111E6A2008B3B27 /* FadeTransitioning.swift */, 47E3C72E2111F472008B3B27 /* CoverVerticalModalTransitioning.swift */, 47E3C7302111F4C2008B3B27 /* CoverVerticalPresentationAnimator.swift */, @@ -3672,9 +3675,18 @@ name = "Custom Views"; sourceTree = ""; }; + 9917D17B2396790D00A7E06E /* PaidRoutesSubscriptionCampaign */ = { + isa = PBXGroup; + children = ( + 9917D17C2396793A00A7E06E /* PaidRoutesSubscriptionCampaign.swift */, + ); + path = PaidRoutesSubscriptionCampaign; + sourceTree = ""; + }; 991CE2B92371D349009EB02A /* PromoCampaign */ = { isa = PBXGroup; children = ( + 9917D17B2396790D00A7E06E /* PaidRoutesSubscriptionCampaign */, 991CE2DB23731440009EB02A /* PromoAfterBookingCampaign */, 991CE2BD2371D349009EB02A /* PromoDiscoveryCampaign */, 991CE2BA2371D349009EB02A /* PromoCampaignManager.swift */, @@ -5662,6 +5674,7 @@ 340475561E081A4600C92850 /* Statistics.mm in Sources */, CD96C71722A7B5DE00DB7CFE /* MWMDiscoveryCityGalleryObjects.mm in Sources */, F6381BF61CD12045004CA943 /* LocaleTranslator.mm in Sources */, + 9917D17F2397B1D600A7E06E /* IPadModalPresentationController.swift in Sources */, 3444DFCD1F1760B900E73099 /* WidgetsArea.swift in Sources */, F6E2FE9A1E097BA00083EBEC /* MWMiPadPlacePageLayoutImpl.mm in Sources */, 34D3B03C1E389D05004100F9 /* MWMEditorSwitchTableViewCell.m in Sources */, @@ -5800,6 +5813,7 @@ 347E039A1FAC5F1D00426032 /* UIWindow+InputLanguage.swift in Sources */, 340475711E081A4600C92850 /* MWMSettings.mm in Sources */, 33046832219C57180041F3A8 /* CategorySettingsViewController.swift in Sources */, + 9917D17D2396793A00A7E06E /* PaidRoutesSubscriptionCampaign.swift in Sources */, 3404165C1E7C29AE00E2B6D6 /* PhotosInteractionAnimator.swift in Sources */, 9917D1852397ECC800A7E06E /* IPadModalPresentationController.swift in Sources */, 993F550E237C622700545511 /* DeepLinkCataloguePathStrategy.swift in Sources */, diff --git a/iphone/Maps/UI/Welcome/PromoDiscovery/PromoDiscoveryRouter.swift b/iphone/Maps/UI/Welcome/PromoDiscovery/PromoDiscoveryRouter.swift index 90bd52214d..bb0413dc47 100644 --- a/iphone/Maps/UI/Welcome/PromoDiscovery/PromoDiscoveryRouter.swift +++ b/iphone/Maps/UI/Welcome/PromoDiscovery/PromoDiscoveryRouter.swift @@ -46,7 +46,7 @@ extension PromoDiscoveryRouter: IPromoDiscoveryRouter { let subscribeViewController = SubscriptionViewBuilder.build(type: .allPass, parentViewController: viewController, source: kStatOnboardingGuidesSubscription, - openCatalog: true, + successDialog: .goToCatalog, completion: nil) viewController.present(subscribeViewController, animated: true) }