Commit b49a5aba by Dmitry Stepanets

Working on presentation logic

parent a936f5c7
......@@ -149,6 +149,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
EssentialDependencies().resolve()
storeManager.add(observer: LocationManager.shared)
Settings.shared.appLaunchCount += 1
return true
}
......@@ -270,7 +271,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
case .subscriptionNudge:
break //config only
case .initialSubscriptionNudge:
availabilityCheckers[feature] = !initialSubscriptionShown && firstTimeUser && !premium
availabilityCheckers[feature] = !initialSubscriptionShown && firstTimeUser && !activeProSubscription
case .subscriptionForPro:
availabilityCheckers[feature] = premium
case .extendedDailyForecast:
......
......@@ -16,6 +16,7 @@ class TodayCoordinator: Coordinator {
// MARK: - Private
private let navigationController = ColoredNavigationController(nibName: nil, bundle: nil)
private var tabBarController: UITabBarController?
private var waitingForConfig = true
var todayViewController: TodayViewController?
// MARK: - Public
......@@ -35,6 +36,11 @@ class TodayCoordinator: Coordinator {
}
navigationController.viewControllers = [todayViewController]
tabBarController?.add(viewController: navigationController)
ConfigManager.shared.add(delegate: self)
if waitingForConfig == false {
showPremiumNudgeIfNeeded()
}
}
public func showOnboardingOrPrivacyNoticeIfNeeded() {
......@@ -104,4 +110,32 @@ class TodayCoordinator: Coordinator {
}
}
}
public func showPremiumNudgeIfNeeded() {
guard tabBarController?.viewControllers?.isEmpty == false else {
return
}
let appLaunchCount = Settings.shared.appLaunchCount
let currentAttemptsCount = Settings.shared.premiumNudgeAttempstCount
let totalAttempts = ConfigManager.shared.config.premiumNudgeTotalTimes
let sessionCount = ConfigManager.shared.config.premiumNudgeSessionShowing
guard appLaunchCount != 0 && currentAttemptsCount <= totalAttempts && !StoreManager.shared.hasSubscription else {
return
}
if appLaunchCount % sessionCount == 0 {
Settings.shared.premiumNudgeAttempstCount += 1
self.openSubscriptionStorePopUp()
}
}
}
//MARK: - ConfigManager Delegate
extension TodayCoordinator: ConfigManagerDelegate {
func dataUpdated(by configManager: ConfigManager) {
waitingForConfig = false
showPremiumNudgeIfNeeded()
}
}
......@@ -104,6 +104,12 @@ public class Settings {
@UserDefaultsBasicValue(key: "initial_subscription_shown", userDefaults: UserDefaults.appDefaults)
public var initialSubscriptionShown = false
@UserDefaultsBasicValue(key: "appLaunchCount", userDefaults: UserDefaults.appDefaults)
public var appLaunchCount = 0
@UserDefaultsBasicValue(key: "premiumNudgeAttemptsCount", userDefaults: UserDefaults.appDefaults)
public var premiumNudgeAttempstCount = 0
#warning("Not implemented!")
//TODO: implement store in UserDefaults and configure via UI in debug builds.
public var adLogging: Bool = true
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment