From 63276c234ac72222ab5b3f3bbfb591a48a29586b Mon Sep 17 00:00:00 2001 From: rachelmcr Date: Mon, 31 Oct 2022 11:23:19 +0000 Subject: [PATCH 1/3] Remove dismiss button from onboarding banner --- .../FeatureAnnouncementCardViewModel.swift | 3 +++ .../JustInTimeMessageAnnouncementCardViewModel.swift | 2 ++ ...ProductsOnboardingAnnouncementCardViewModel.swift | 12 ++++++++---- .../FeatureAnnouncementCardView.swift | 2 +- 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/WooCommerce/Classes/ViewModels/Feature Announcement Cards/FeatureAnnouncementCardViewModel.swift b/WooCommerce/Classes/ViewModels/Feature Announcement Cards/FeatureAnnouncementCardViewModel.swift index 181a3e58a80..b7f420fc546 100644 --- a/WooCommerce/Classes/ViewModels/Feature Announcement Cards/FeatureAnnouncementCardViewModel.swift +++ b/WooCommerce/Classes/ViewModels/Feature Announcement Cards/FeatureAnnouncementCardViewModel.swift @@ -17,6 +17,7 @@ protocol AnnouncementCardViewModelProtocol { func onAppear() func ctaTapped() + var showDismissButton: Bool { get } var showDismissConfirmation: Bool { get } var dismissAlertTitle: String { get } var dismissAlertMessage: String { get } @@ -45,6 +46,8 @@ class FeatureAnnouncementCardViewModel: AnnouncementCardViewModelProtocol { config.image } + var showDismissButton: Bool = true + var showDismissConfirmation: Bool { config.showDismissConfirmation } diff --git a/WooCommerce/Classes/ViewModels/Feature Announcement Cards/JustInTimeMessageAnnouncementCardViewModel.swift b/WooCommerce/Classes/ViewModels/Feature Announcement Cards/JustInTimeMessageAnnouncementCardViewModel.swift index 58a4dec0e9f..ea620f319bf 100644 --- a/WooCommerce/Classes/ViewModels/Feature Announcement Cards/JustInTimeMessageAnnouncementCardViewModel.swift +++ b/WooCommerce/Classes/ViewModels/Feature Announcement Cards/JustInTimeMessageAnnouncementCardViewModel.swift @@ -22,6 +22,8 @@ struct JustInTimeMessageAnnouncementCardViewModel: AnnouncementCardViewModelProt // No-op } + var showDismissButton: Bool = true + var showDismissConfirmation: Bool = false var dismissAlertTitle: String = "" diff --git a/WooCommerce/Classes/ViewModels/Feature Announcement Cards/ProductsOnboardingAnnouncementCardViewModel.swift b/WooCommerce/Classes/ViewModels/Feature Announcement Cards/ProductsOnboardingAnnouncementCardViewModel.swift index a6597208792..0b0796142cd 100644 --- a/WooCommerce/Classes/ViewModels/Feature Announcement Cards/ProductsOnboardingAnnouncementCardViewModel.swift +++ b/WooCommerce/Classes/ViewModels/Feature Announcement Cards/ProductsOnboardingAnnouncementCardViewModel.swift @@ -22,6 +22,14 @@ struct ProductsOnboardingAnnouncementCardViewModel: AnnouncementCardViewModelPro // No-op } + // MARK: Dismiss button (disabled) + + var showDismissButton: Bool = false + + func dontShowAgainTapped() { + // No-op + } + // MARK: Dismiss confirmation alert (disabled) var showDismissConfirmation: Bool = false @@ -30,10 +38,6 @@ struct ProductsOnboardingAnnouncementCardViewModel: AnnouncementCardViewModelPro var dismissAlertMessage: String = "" - func dontShowAgainTapped() { - // No-op - } - func remindLaterTapped() { // No-op } diff --git a/WooCommerce/Classes/ViewRelated/ReusableViews/SwiftUI Components/FeatureAnnouncementCardView.swift b/WooCommerce/Classes/ViewRelated/ReusableViews/SwiftUI Components/FeatureAnnouncementCardView.swift index e1f6de74d85..452b32b0a1f 100644 --- a/WooCommerce/Classes/ViewRelated/ReusableViews/SwiftUI Components/FeatureAnnouncementCardView.swift +++ b/WooCommerce/Classes/ViewRelated/ReusableViews/SwiftUI Components/FeatureAnnouncementCardView.swift @@ -30,7 +30,7 @@ struct FeatureAnnouncementCardView: View { BadgeView(type: viewModel.badgeType) .padding(.leading, Layout.padding) Spacer() - if let dismiss = dismiss { + if viewModel.showDismissButton, let dismiss = dismiss { Button(action: { if viewModel.showDismissConfirmation { showingDismissActionSheet = true From 191f02fc52cd221bfc30f647dbff4aa321eb6460 Mon Sep 17 00:00:00 2001 From: rachelmcr Date: Mon, 31 Oct 2022 11:51:48 +0000 Subject: [PATCH 2/3] Redirect to products tab when onboarding CTA is tapped --- .../ProductsOnboardingAnnouncementCardViewModel.swift | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/WooCommerce/Classes/ViewModels/Feature Announcement Cards/ProductsOnboardingAnnouncementCardViewModel.swift b/WooCommerce/Classes/ViewModels/Feature Announcement Cards/ProductsOnboardingAnnouncementCardViewModel.swift index 0b0796142cd..0e150d6cb7c 100644 --- a/WooCommerce/Classes/ViewModels/Feature Announcement Cards/ProductsOnboardingAnnouncementCardViewModel.swift +++ b/WooCommerce/Classes/ViewModels/Feature Announcement Cards/ProductsOnboardingAnnouncementCardViewModel.swift @@ -18,8 +18,14 @@ struct ProductsOnboardingAnnouncementCardViewModel: AnnouncementCardViewModelPro // No-op } + /// Opens the Products tab when the Call To Action button is tapped + /// func ctaTapped() { - // No-op + guard let tabBarController = AppDelegate.shared.tabBarController else { + return + } + + tabBarController.navigateTo(.products) } // MARK: Dismiss button (disabled) From 2df145969e5bbc4816ab24a71a76de7cdf7f16c3 Mon Sep 17 00:00:00 2001 From: rachelmcr Date: Mon, 31 Oct 2022 12:07:20 +0000 Subject: [PATCH 3/3] Dismiss onboarding banner when CTA is tapped --- ...ProductsOnboardingAnnouncementCardViewModel.swift | 12 +++++------- .../ViewRelated/Dashboard/DashboardViewModel.swift | 9 ++++++++- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/WooCommerce/Classes/ViewModels/Feature Announcement Cards/ProductsOnboardingAnnouncementCardViewModel.swift b/WooCommerce/Classes/ViewModels/Feature Announcement Cards/ProductsOnboardingAnnouncementCardViewModel.swift index 0e150d6cb7c..d191f325ed8 100644 --- a/WooCommerce/Classes/ViewModels/Feature Announcement Cards/ProductsOnboardingAnnouncementCardViewModel.swift +++ b/WooCommerce/Classes/ViewModels/Feature Announcement Cards/ProductsOnboardingAnnouncementCardViewModel.swift @@ -18,14 +18,12 @@ struct ProductsOnboardingAnnouncementCardViewModel: AnnouncementCardViewModelPro // No-op } - /// Opens the Products tab when the Call To Action button is tapped - /// - func ctaTapped() { - guard let tabBarController = AppDelegate.shared.tabBarController else { - return - } + // MARK: Call to Action + + let onCTATapped: (() -> Void)? - tabBarController.navigateTo(.products) + func ctaTapped() { + onCTATapped?() } // MARK: Dismiss button (disabled) diff --git a/WooCommerce/Classes/ViewRelated/Dashboard/DashboardViewModel.swift b/WooCommerce/Classes/ViewRelated/Dashboard/DashboardViewModel.swift index 8108faf6359..f6312fd8950 100644 --- a/WooCommerce/Classes/ViewRelated/Dashboard/DashboardViewModel.swift +++ b/WooCommerce/Classes/ViewRelated/Dashboard/DashboardViewModel.swift @@ -123,7 +123,14 @@ final class DashboardViewModel { ServiceLocator.analytics.track(.productsOnboardingEligible) if self?.featureFlagService.isFeatureFlagEnabled(.productsOnboarding) == true { - let viewModel = ProductsOnboardingAnnouncementCardViewModel() + let viewModel = ProductsOnboardingAnnouncementCardViewModel(onCTATapped: { [weak self] in + guard let tabBarController = AppDelegate.shared.tabBarController else { + return + } + + self?.announcementViewModel = nil // Dismiss announcement + tabBarController.navigateTo(.products) + }) self?.announcementViewModel = viewModel } }