Skip to content

Commit d043b67

Browse files
committed
Send tasks to the full onboarding view
1 parent d304dae commit d043b67

File tree

5 files changed

+22
-14
lines changed

5 files changed

+22
-14
lines changed

WooCommerce/Classes/ViewRelated/Dashboard/DashboardView.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ struct DashboardView: View {
2525
/// Set externally in the hosting controller.
2626
var onboardingTaskTapped: ((Site, StoreOnboardingTask) -> Void)?
2727
/// Set externally in the hosting controller.
28-
var viewAllOnboardingTasksTapped: ((Site) -> Void)?
28+
var viewAllOnboardingTasksTapped: ((Site, [StoreOnboardingTaskViewModel]) -> Void)?
2929

3030
/// Set externally in the hosting controller.
3131
var showAllBlazeCampaignsTapped: (() -> Void)?
@@ -215,9 +215,9 @@ private extension DashboardView {
215215
onTaskTapped: { task in
216216
guard let currentSite else { return }
217217
onboardingTaskTapped?(currentSite, task)
218-
}, onViewAllTapped: {
218+
}, onViewAllTapped: { tasks in
219219
guard let currentSite else { return }
220-
viewAllOnboardingTasksTapped?(currentSite)
220+
viewAllOnboardingTasksTapped?(currentSite, tasks)
221221
})
222222
case .blaze:
223223
BlazeCampaignDashboardView(viewModel: viewModel.blazeCampaignDashboardViewModel,

WooCommerce/Classes/ViewRelated/Dashboard/DashboardViewHostingController.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -175,11 +175,11 @@ private extension DashboardViewHostingController {
175175
storeOnboardingCoordinator?.start(task: task)
176176
}
177177

178-
rootView.viewAllOnboardingTasksTapped = { [weak self] site in
178+
rootView.viewAllOnboardingTasksTapped = { [weak self] site, tasks in
179179
guard let self else { return }
180180
ServiceLocator.analytics.track(event: .DynamicDashboard.dashboardCardInteracted(type: .onboarding))
181181
updateStoreOnboardingCoordinatorIfNeeded(with: site)
182-
storeOnboardingCoordinator?.start()
182+
storeOnboardingCoordinator?.start(tasks: tasks)
183183
}
184184
}
185185

WooCommerce/Classes/ViewRelated/Dashboard/Onboarding/StoreOnboardingCoordinator.swift

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import struct Yosemite.Site
55
import struct Yosemite.StoreOnboardingTask
66

77
/// Coordinates navigation for store onboarding.
8-
final class StoreOnboardingCoordinator: Coordinator {
8+
final class StoreOnboardingCoordinator {
99
typealias TaskType = StoreOnboardingTask.TaskType
1010

1111
let navigationController: UINavigationController
@@ -31,11 +31,15 @@ final class StoreOnboardingCoordinator: Coordinator {
3131
}
3232

3333
/// Navigates to the fullscreen store onboarding view.
34-
func start() {
34+
func start(tasks: [StoreOnboardingTaskViewModel]) {
3535
Task { @MainActor in
36+
let viewModel = StoreOnboardingViewModel(
37+
siteID: site.siteID,
38+
isExpanded: true,
39+
taskViewModels: tasks
40+
)
3641
let onboardingNavigationController = UINavigationController()
37-
let onboardingViewController = StoreOnboardingViewHostingController(viewModel: .init(siteID: site.siteID,
38-
isExpanded: true),
42+
let onboardingViewController = StoreOnboardingViewHostingController(viewModel: viewModel,
3943
navigationController: onboardingNavigationController,
4044
site: site)
4145
onboardingNavigationController.pushViewController(onboardingViewController, animated: false)

WooCommerce/Classes/ViewRelated/Dashboard/Onboarding/StoreOnboardingView.swift

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,9 @@ final class StoreOnboardingViewHostingController: SelfSizingHostingController<St
4242
}
4343

4444
if !viewModel.isExpanded {
45-
rootView.viewAllTapped = { [weak self] in
45+
rootView.viewAllTapped = { [weak self] tasks in
4646
guard let self else { return }
47-
self.coordinator.start()
47+
self.coordinator.start(tasks: tasks)
4848
}
4949
}
5050
}
@@ -93,13 +93,13 @@ struct StoreOnboardingView: View {
9393
/// Set externally in the hosting controller.
9494
var taskTapped: ((StoreOnboardingTask) -> Void)?
9595
/// Set externally in the hosting controller.
96-
var viewAllTapped: (() -> Void)?
96+
var viewAllTapped: (([StoreOnboardingTaskViewModel]) -> Void)?
9797

9898
@ObservedObject private var viewModel: StoreOnboardingViewModel
9999

100100
init(viewModel: StoreOnboardingViewModel,
101101
onTaskTapped: ((StoreOnboardingTask) -> Void)? = nil,
102-
onViewAllTapped: (() -> Void)? = nil) {
102+
onViewAllTapped: (([StoreOnboardingTaskViewModel]) -> Void)? = nil) {
103103
self.viewModel = viewModel
104104
self.taskTapped = onTaskTapped
105105
self.viewAllTapped = onViewAllTapped
@@ -159,7 +159,9 @@ struct StoreOnboardingView: View {
159159
.padding(.leading, Layout.padding)
160160

161161
// View all button
162-
viewAllButton(action: viewAllTapped, text: String(format: Localization.viewAll, viewModel.taskViewModels.count))
162+
viewAllButton(action: {
163+
viewAllTapped?(viewModel.taskViewModels)
164+
}, text: String(format: Localization.viewAll, viewModel.taskViewModels.count))
163165
.renderedIf(viewModel.shouldShowViewAllButton)
164166
.padding(.horizontal, Layout.padding)
165167
}

WooCommerce/Classes/ViewRelated/Dashboard/Onboarding/StoreOnboardingViewModel.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ class StoreOnboardingViewModel: ObservableObject {
8383
/// - defaults: UserDefaults for storing when all onboarding tasks are completed
8484
init(siteID: Int64,
8585
isExpanded: Bool,
86+
taskViewModels: [StoreOnboardingTaskViewModel] = [],
8687
stores: StoresManager = ServiceLocator.stores,
8788
defaults: UserDefaults = .standard,
8889
analytics: Analytics = ServiceLocator.analytics,
@@ -94,6 +95,7 @@ class StoreOnboardingViewModel: ObservableObject {
9495
self.defaults = defaults
9596
self.analytics = analytics
9697
self.waitingTimeTracker = waitingTimeTracker
98+
self.taskViewModels = taskViewModels
9799

98100
$noTasksAvailableForDisplay
99101
.combineLatest(defaults.publisher(for: \.completedAllStoreOnboardingTasks))

0 commit comments

Comments
 (0)