Skip to content
This repository has been archived by the owner. It is now read-only.
Permalink
Browse files

[IP-410] Only show contextual onboarding message if dashboard has non…

…-zero numbers
  • Loading branch information
mahmoud-adam85 committed Apr 4, 2019
1 parent ede23e9 commit ba4dc0904489f39aabcd701685e82f108a3763c8
@@ -22,7 +22,8 @@ extension Notification.Name {
class ContextualMessagesViewModel: NSObject {

private static let LastShowMessageDateKey = "contextualMessage.any.show.date"
private static let ShowOnboardingMessageKey = "contextualMessage.onboarding.show"
private static let OnboardingMessageDismissedKey = "contextualMessage.onboarding.show"
private static let OnboardingDataSyncedKey = "contextualMessage.onboarding.synced"
private static let LastExpiredTrailsMessageDateKey = "contextualMessage.expiredTrial.show.date"
private static let adBlockingMessageCountKey = "contextualMessage.adBlocking.show.count"
private static let antiTrackingMessageCountKey = "contextualMessage.antiTracking.show.count"
@@ -58,7 +59,7 @@ class ContextualMessagesViewModel: NSObject {
func contextualMessageShown(_ type: ContextualMessageType) {
switch type {
case .onboarding:
UserDefaults.standard.set(true, forKey: ContextualMessagesViewModel.ShowOnboardingMessageKey)
UserDefaults.standard.set(true, forKey: ContextualMessagesViewModel.OnboardingMessageDismissedKey)
LegacyTelemetryHelper.logMessage(action: "show", topic: "onboarding_dashboard", style: "notification", view: "web")

case .expiredTrial:
@@ -78,14 +79,19 @@ class ContextualMessagesViewModel: NSObject {
}
}

func onboardingDataSynced() {
UserDefaults.standard.set(true, forKey: ContextualMessagesViewModel.OnboardingDataSyncedKey)
}

//MARK:- private helper methods
/*
* Show on first page the user visits (right from beginning; don't wait until page is loaded)
* Keep showing on all web pages, but not on start tab, VPN view, etc. until user has clicked on the dashboard icon, thus opening the dashboard for the first time
*/
private func shouldShowOnboardingMesage() -> Bool {
return !UserDefaults.standard.bool(forKey: ContextualMessagesViewModel.ShowOnboardingMessageKey)
let onboardingDataSynced = UserDefaults.standard.bool(forKey: ContextualMessagesViewModel.OnboardingDataSyncedKey)
let onboardingMessageDismissed = UserDefaults.standard.bool(forKey: ContextualMessagesViewModel.OnboardingMessageDismissedKey)
return onboardingDataSynced && !onboardingMessageDismissed
}

/*
@@ -234,6 +234,7 @@ class CurrentPageInfo: NSObject {
DispatchQueue.global(qos: .utility).async {
//print("Will send data for tab = \(tabID) and page = \(String(describing: currentP))")
Engine.sharedInstance.getBridge().callAction("insights:pushGhosteryPageStats", args: [tabID, pageInfo, apps, bugs])
ContextualMessagesViewModel.shared.onboardingDataSynced()
}

}

0 comments on commit ba4dc09

Please sign in to comment.