From 0d740ff80cdeb3e040b4624f62c5042a23d54371 Mon Sep 17 00:00:00 2001 From: mazevedo Date: Fri, 29 Nov 2024 11:15:53 -0300 Subject: [PATCH 1/2] Display YiR survey for users after two slides --- .../Components/Year in Review/WMFYearInReviewView.swift | 3 +++ .../Year in Review/WMFYearInReviewViewModel.swift | 9 +++++---- .../Coordinator/YearInReviewCoordinatorDelegate.swift | 2 +- Wikipedia/Code/YearInReviewCoordinator.swift | 4 ++-- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/WMFComponents/Sources/WMFComponents/Components/Year in Review/WMFYearInReviewView.swift b/WMFComponents/Sources/WMFComponents/Components/Year in Review/WMFYearInReviewView.swift index 8f7a4ddd6f6..75cf5272a21 100644 --- a/WMFComponents/Sources/WMFComponents/Components/Year in Review/WMFYearInReviewView.swift +++ b/WMFComponents/Sources/WMFComponents/Components/Year in Review/WMFYearInReviewView.swift @@ -79,6 +79,9 @@ public struct WMFYearInReviewView: View { .onChange(of: viewModel.currentSlide) { newSlide in // Logs slide impressions and next taps viewModel.logYearInReviewSlideDidAppear() + if newSlide == 1 { + viewModel.hasSeenTwoSlides = true + } } .toolbar { if !viewModel.isFirstSlide { diff --git a/WMFComponents/Sources/WMFComponents/Components/Year in Review/WMFYearInReviewViewModel.swift b/WMFComponents/Sources/WMFComponents/Components/Year in Review/WMFYearInReviewViewModel.swift index 01eb099ac0b..4de924c9c4d 100644 --- a/WMFComponents/Sources/WMFComponents/Components/Year in Review/WMFYearInReviewViewModel.swift +++ b/WMFComponents/Sources/WMFComponents/Components/Year in Review/WMFYearInReviewViewModel.swift @@ -24,7 +24,8 @@ public class WMFYearInReviewViewModel: ObservableObject { weak var coordinatorDelegate: YearInReviewCoordinatorDelegate? weak var badgeDelegate: YearInReviewBadgeDelegate? private(set) weak var loggingDelegate: WMFYearInReviewLoggingDelegate? - + var hasSeenTwoSlides: Bool = false + @Published public var isLoading: Bool = false public init(isFirstSlide: Bool = true, localizedStrings: LocalizedStrings, slides: [YearInReviewSlideContent], shareLink: String, hashtag: String, hasPersonalizedDonateSlide: Bool, coordinatorDelegate: YearInReviewCoordinatorDelegate?, loggingDelegate: WMFYearInReviewLoggingDelegate, badgeDelegate: YearInReviewBadgeDelegate?) { @@ -44,8 +45,8 @@ public class WMFYearInReviewViewModel: ObservableObject { } public func nextSlide() { - if isLastSlide { - coordinatorDelegate?.handleYearInReviewAction(.dismiss(isLastSlide: true)) + if hasSeenTwoSlides { + coordinatorDelegate?.handleYearInReviewAction(.dismiss(hasSeenTwoSlides: true)) } else { currentSlide = (currentSlide + 1) % slides.count } @@ -85,7 +86,7 @@ public class WMFYearInReviewViewModel: ObservableObject { } func handleDone() { - coordinatorDelegate?.handleYearInReviewAction(.dismiss(isLastSlide: isLastSlide)) + coordinatorDelegate?.handleYearInReviewAction(.dismiss(hasSeenTwoSlides: hasSeenTwoSlides)) } func handleDonate(sourceRect: CGRect) { diff --git a/WMFComponents/Sources/WMFComponents/Coordinator/YearInReviewCoordinatorDelegate.swift b/WMFComponents/Sources/WMFComponents/Coordinator/YearInReviewCoordinatorDelegate.swift index 0b03658f6a4..4bb8c940491 100644 --- a/WMFComponents/Sources/WMFComponents/Coordinator/YearInReviewCoordinatorDelegate.swift +++ b/WMFComponents/Sources/WMFComponents/Coordinator/YearInReviewCoordinatorDelegate.swift @@ -7,7 +7,7 @@ public protocol YearInReviewCoordinatorDelegate: AnyObject { public enum YearInReviewCoordinatorAction { case donate(sourceRect: CGRect) case share(image: UIImage) - case dismiss(isLastSlide: Bool) + case dismiss(hasSeenTwoSlides: Bool) case introLearnMore case learnMore(url: URL, shouldShowDonateButton: Bool) case info(url: URL) diff --git a/Wikipedia/Code/YearInReviewCoordinator.swift b/Wikipedia/Code/YearInReviewCoordinator.swift index 01b3b5188b0..51d9ee1c744 100644 --- a/Wikipedia/Code/YearInReviewCoordinator.swift +++ b/Wikipedia/Code/YearInReviewCoordinator.swift @@ -700,12 +700,12 @@ extension YearInReviewCoordinator: YearInReviewCoordinatorDelegate { visibleVC.present(activityController, animated: true, completion: nil) } - case .dismiss(let isLastSlide): + case .dismiss(let hasSeenTwoSlides): (self.navigationController as? RootNavigationController)?.turnOffForcePortrait() navigationController.dismiss(animated: true, completion: { [weak self] in guard let self else { return } - guard isLastSlide else { return } + guard hasSeenTwoSlides else { return } self.presentSurveyIfNeeded() }) From 0a99348d287ee392e8d6c1f327a8c3eb9f29fd44 Mon Sep 17 00:00:00 2001 From: mazevedo Date: Fri, 29 Nov 2024 11:22:21 -0300 Subject: [PATCH 2/2] Check if slide is last --- .../Components/Year in Review/WMFYearInReviewViewModel.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WMFComponents/Sources/WMFComponents/Components/Year in Review/WMFYearInReviewViewModel.swift b/WMFComponents/Sources/WMFComponents/Components/Year in Review/WMFYearInReviewViewModel.swift index 4de924c9c4d..d28f9affdc8 100644 --- a/WMFComponents/Sources/WMFComponents/Components/Year in Review/WMFYearInReviewViewModel.swift +++ b/WMFComponents/Sources/WMFComponents/Components/Year in Review/WMFYearInReviewViewModel.swift @@ -45,7 +45,7 @@ public class WMFYearInReviewViewModel: ObservableObject { } public func nextSlide() { - if hasSeenTwoSlides { + if isLastSlide { coordinatorDelegate?.handleYearInReviewAction(.dismiss(hasSeenTwoSlides: true)) } else { currentSlide = (currentSlide + 1) % slides.count pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy