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..d191f325ed8 100644 --- a/WooCommerce/Classes/ViewModels/Feature Announcement Cards/ProductsOnboardingAnnouncementCardViewModel.swift +++ b/WooCommerce/Classes/ViewModels/Feature Announcement Cards/ProductsOnboardingAnnouncementCardViewModel.swift @@ -18,7 +18,19 @@ struct ProductsOnboardingAnnouncementCardViewModel: AnnouncementCardViewModelPro // No-op } + // MARK: Call to Action + + let onCTATapped: (() -> Void)? + func ctaTapped() { + onCTATapped?() + } + + // MARK: Dismiss button (disabled) + + var showDismissButton: Bool = false + + func dontShowAgainTapped() { // No-op } @@ -30,10 +42,6 @@ struct ProductsOnboardingAnnouncementCardViewModel: AnnouncementCardViewModelPro var dismissAlertMessage: String = "" - func dontShowAgainTapped() { - // No-op - } - func remindLaterTapped() { // No-op } 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 } } 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