diff --git a/Kickstarter-iOS/ViewModels/AppDelegateViewModel.swift b/Kickstarter-iOS/ViewModels/AppDelegateViewModel.swift index 586953faae..ef1497e9d7 100644 --- a/Kickstarter-iOS/ViewModels/AppDelegateViewModel.swift +++ b/Kickstarter-iOS/ViewModels/AppDelegateViewModel.swift @@ -340,8 +340,13 @@ public final class AppDelegateViewModel: AppDelegateViewModelType, AppDelegateVi ) .skipNil() + self.goToLandingPage = self.applicationLaunchOptionsProperty.signal.ignoreValues() + .takeWhen(self.didUpdateOptimizelyClientProperty.signal.ignoreValues()) + .filter(shouldGoToLandingPage) + let deepLink = deeplinkActivated .filter { _ in shouldGoToLandingPage() == false } + .take(until: self.goToLandingPage) self.findRedirectUrl = deepLinkUrl .filter { Navigation.match($0) == .emailClick } @@ -378,10 +383,6 @@ public final class AppDelegateViewModel: AppDelegateViewModelType, AppDelegateVi .filter { $0 == .tab(.search) } .ignoreValues() - self.goToLandingPage = self.applicationLaunchOptionsProperty.signal.ignoreValues() - .takeWhen(self.didUpdateOptimizelyClientProperty.signal.ignoreValues()) - .filter(shouldGoToLandingPage) - self.goToLogin = deepLink .filter { $0 == .tab(.login) } .ignoreValues() diff --git a/Kickstarter-iOS/ViewModels/AppDelegateViewModelTests.swift b/Kickstarter-iOS/ViewModels/AppDelegateViewModelTests.swift index 9ed7a792f1..8aabc1cc27 100644 --- a/Kickstarter-iOS/ViewModels/AppDelegateViewModelTests.swift +++ b/Kickstarter-iOS/ViewModels/AppDelegateViewModelTests.swift @@ -2348,6 +2348,33 @@ final class AppDelegateViewModelTests: TestCase { self.goToLandingPage.assertDidNotEmitValue() } } + + func testDeeplink_DoesNotActivateIf_GoToLandingPageEmits() { + let optimizelyClient = MockOptimizelyClient() + |> \.experiments .~ + [OptimizelyExperiment.Key.nativeOnboarding.rawValue: OptimizelyExperiment.Variant.variant1.rawValue] + + let userDefaults = MockKeyValueStore() + |> \.hasSeenLandingPage .~ false + + withEnvironment(currentUser: nil, optimizelyClient: optimizelyClient, userDefaults: userDefaults) { + self.goToLandingPage.assertDidNotEmitValue() + + self.vm.inputs.applicationDidFinishLaunching(application: UIApplication.shared, launchOptions: nil) + self.vm.inputs.didUpdateOptimizelyClient(MockOptimizelyClient()) + + _ = self.vm.inputs.applicationOpenUrl( + application: UIApplication.shared, + url: URL( + string: "https://www.kickstarter.com/projects/chelsea-punk/chelsea-punk-band-the-final-album" + )!, + options: [:] + ) + + self.presentViewController.assertDidNotEmitValue() + self.goToLandingPage.assertValueCount(1) + } + } } private func qualtricsProps() -> [String: String] {