Skip to content

Commit

Permalink
onboarding dax dialogs (#3149)
Browse files Browse the repository at this point in the history
Task/Issue URL:
https://app.asana.com/0/1204186595873227/1208077416568671/f
Tech Design URL: Look at BSK branch

**Description**: Adds Contextual Dax Dialogs
  • Loading branch information
SabrinaTardio authored Aug 28, 2024
1 parent e50b5e4 commit 60df756
Show file tree
Hide file tree
Showing 6 changed files with 1,700 additions and 0 deletions.
42 changes: 42 additions & 0 deletions DuckDuckGo.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -1428,6 +1428,12 @@
560C3FFD2BC9911000F589CE /* PermanentSurveyManagerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 560C3FFB2BC9911000F589CE /* PermanentSurveyManagerTests.swift */; };
560C3FFF2BCD5A1E00F589CE /* PermanentSurveyManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 560C3FFE2BCD5A1E00F589CE /* PermanentSurveyManager.swift */; };
560C40002BCD5A1E00F589CE /* PermanentSurveyManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 560C3FFE2BCD5A1E00F589CE /* PermanentSurveyManager.swift */; };
560EB9322C78946F0080DBC8 /* ContextualOnboardingDialogs.swift in Sources */ = {isa = PBXBuildFile; fileRef = 560EB9312C78946F0080DBC8 /* ContextualOnboardingDialogs.swift */; };
560EB9332C78946F0080DBC8 /* ContextualOnboardingDialogs.swift in Sources */ = {isa = PBXBuildFile; fileRef = 560EB9312C78946F0080DBC8 /* ContextualOnboardingDialogs.swift */; };
560EB9352C7897370080DBC8 /* Onboarding in Frameworks */ = {isa = PBXBuildFile; productRef = 560EB9342C7897370080DBC8 /* Onboarding */; };
560EB9372C78974C0080DBC8 /* Onboarding in Frameworks */ = {isa = PBXBuildFile; productRef = 560EB9362C78974C0080DBC8 /* Onboarding */; };
560EB9392C789A450080DBC8 /* OnboardingSuggestedSearchesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 560EB9382C789A450080DBC8 /* OnboardingSuggestedSearchesProvider.swift */; };
560EB93A2C789A450080DBC8 /* OnboardingSuggestedSearchesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 560EB9382C789A450080DBC8 /* OnboardingSuggestedSearchesProvider.swift */; };
5614B3A12BBD639D009B5031 /* ZoomPopover.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5614B3A02BBD639D009B5031 /* ZoomPopover.swift */; };
5614B3A22BBD639D009B5031 /* ZoomPopover.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5614B3A02BBD639D009B5031 /* ZoomPopover.swift */; };
561D29C22BDA745A007B91D0 /* MockSyncPausedStateManaging.swift in Sources */ = {isa = PBXBuildFile; fileRef = 561D29C02BDA7430007B91D0 /* MockSyncPausedStateManaging.swift */; };
Expand Down Expand Up @@ -1517,6 +1523,8 @@
56BA1E882BAC8239001CF69F /* SSLErrorPageUserScriptTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 56BA1E862BAC8239001CF69F /* SSLErrorPageUserScriptTests.swift */; };
56BA1E8A2BB1CB5B001CF69F /* CertificateTrustEvaluator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 56BA1E892BB1CB5B001CF69F /* CertificateTrustEvaluator.swift */; };
56BA1E8B2BB1CB5B001CF69F /* CertificateTrustEvaluator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 56BA1E892BB1CB5B001CF69F /* CertificateTrustEvaluator.swift */; };
56CE77612C7DFCF800AC1ED2 /* OnboardingSuggestedSearchesProviderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 56CE77602C7DFCF800AC1ED2 /* OnboardingSuggestedSearchesProviderTests.swift */; };
56CE77622C7DFCF800AC1ED2 /* OnboardingSuggestedSearchesProviderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 56CE77602C7DFCF800AC1ED2 /* OnboardingSuggestedSearchesProviderTests.swift */; };
56CEE90E2B7A725B00CF10AA /* InfoPlist.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = 56CEE90D2B7A6DE100CF10AA /* InfoPlist.xcstrings */; };
56CEE90F2B7A725C00CF10AA /* InfoPlist.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = 56CEE90D2B7A6DE100CF10AA /* InfoPlist.xcstrings */; };
56D145E829E6BB6300E3488A /* CapturingDataImportProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 56D145E729E6BB6300E3488A /* CapturingDataImportProvider.swift */; };
Expand Down Expand Up @@ -3491,6 +3499,8 @@
5603D90529B7B746007F9F01 /* MockTabViewItemDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockTabViewItemDelegate.swift; sourceTree = "<group>"; };
560C3FFB2BC9911000F589CE /* PermanentSurveyManagerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PermanentSurveyManagerTests.swift; sourceTree = "<group>"; };
560C3FFE2BCD5A1E00F589CE /* PermanentSurveyManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PermanentSurveyManager.swift; sourceTree = "<group>"; };
560EB9312C78946F0080DBC8 /* ContextualOnboardingDialogs.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContextualOnboardingDialogs.swift; sourceTree = "<group>"; };
560EB9382C789A450080DBC8 /* OnboardingSuggestedSearchesProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingSuggestedSearchesProvider.swift; sourceTree = "<group>"; };
5614B3A02BBD639D009B5031 /* ZoomPopover.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ZoomPopover.swift; sourceTree = "<group>"; };
561D29C02BDA7430007B91D0 /* MockSyncPausedStateManaging.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockSyncPausedStateManaging.swift; sourceTree = "<group>"; };
561D29C42BDA749A007B91D0 /* MockDDGSyncing.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockDDGSyncing.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -3537,6 +3547,7 @@
56BA1E812BAC506F001CF69F /* SSLErrorPageUserScript.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SSLErrorPageUserScript.swift; sourceTree = "<group>"; };
56BA1E862BAC8239001CF69F /* SSLErrorPageUserScriptTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SSLErrorPageUserScriptTests.swift; sourceTree = "<group>"; };
56BA1E892BB1CB5B001CF69F /* CertificateTrustEvaluator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CertificateTrustEvaluator.swift; sourceTree = "<group>"; };
56CE77602C7DFCF800AC1ED2 /* OnboardingSuggestedSearchesProviderTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingSuggestedSearchesProviderTests.swift; sourceTree = "<group>"; };
56CEE9092B7A66C500CF10AA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
56CEE90D2B7A6DE100CF10AA /* InfoPlist.xcstrings */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; path = InfoPlist.xcstrings; sourceTree = "<group>"; };
56D145E729E6BB6300E3488A /* CapturingDataImportProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CapturingDataImportProvider.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -4400,6 +4411,7 @@
3706FCAA293F65D500E42796 /* UserScript in Frameworks */,
85E2BBD02B8F534A00DBEC7A /* History in Frameworks */,
4BF97AD52B43C43F00EB4240 /* NetworkProtection in Frameworks */,
560EB9372C78974C0080DBC8 /* Onboarding in Frameworks */,
3739326529AE4B39009346AE /* DDGSync in Frameworks */,
D6BC8AC82C5A95B10025375B /* DuckPlayer in Frameworks */,
37DF000729F9C061002B7D3E /* SyncDataProviders in Frameworks */,
Expand Down Expand Up @@ -4586,6 +4598,7 @@
files = (
C18BF9CC2C73678500ED6B8A /* Freemium in Frameworks */,
F1DF95E32BD1807C0045E591 /* Crashes in Frameworks */,
560EB9352C7897370080DBC8 /* Onboarding in Frameworks */,
85E2BBCE2B8F534000DBEC7A /* History in Frameworks */,
1EA7B8D32B7E078C000330A4 /* SubscriptionUI in Frameworks */,
B6F7128129F681EB00594A45 /* QuickLookUI.framework in Frameworks */,
Expand Down Expand Up @@ -6079,6 +6092,15 @@
path = View;
sourceTree = "<group>";
};
560EB9302C78943E0080DBC8 /* ContextualOnboarding */ = {
isa = PBXGroup;
children = (
560EB9312C78946F0080DBC8 /* ContextualOnboardingDialogs.swift */,
560EB9382C789A450080DBC8 /* OnboardingSuggestedSearchesProvider.swift */,
);
path = ContextualOnboarding;
sourceTree = "<group>";
};
561D29BF2BDA7419007B91D0 /* Mocks */ = {
isa = PBXGroup;
children = (
Expand Down Expand Up @@ -6496,6 +6518,7 @@
85B7184727677A7D00B4277F /* Onboarding */ = {
isa = PBXGroup;
children = (
560EB9302C78943E0080DBC8 /* ContextualOnboarding */,
85707F2F276A7DB000DC0649 /* ViewModel */,
85B7184827677A9200B4277F /* View */,
56A053FB2C19E8F7007D8FAB /* OnboardingActionsManager.swift */,
Expand Down Expand Up @@ -6608,6 +6631,7 @@
56A0542F2C2043C8007D8FAB /* OnboardingTabExtensionTests.swift */,
56A054402C22438C007D8FAB /* OnboardingNavigatingTests.swift */,
56A054432C2252CE007D8FAB /* OnboardingUserScriptTests.swift */,
56CE77602C7DFCF800AC1ED2 /* OnboardingSuggestedSearchesProviderTests.swift */,
);
path = Onboarding;
sourceTree = "<group>";
Expand Down Expand Up @@ -8745,6 +8769,7 @@
371209242C232E6C003ADF3D /* RemoteMessaging */,
D6BC8AC72C5A95B10025375B /* DuckPlayer */,
9D9DE5742C63AA0C00D20B15 /* AppKitExtensions */,
560EB9362C78974C0080DBC8 /* Onboarding */,
C18BF9CD2C73678C00ED6B8A /* Freemium */,
);
productName = DuckDuckGo;
Expand Down Expand Up @@ -9162,6 +9187,7 @@
371209222C232E66003ADF3D /* RemoteMessaging */,
D6BC8AC52C5A95AA0025375B /* DuckPlayer */,
9D9DE5722C63AA0700D20B15 /* AppKitExtensions */,
560EB9342C7897370080DBC8 /* Onboarding */,
C18BF9CB2C73678500ED6B8A /* Freemium */,
);
productName = DuckDuckGo;
Expand Down Expand Up @@ -10043,6 +10069,7 @@
3706FAB9293F65D500E42796 /* TabBarViewController.swift in Sources */,
56A054202C1CA1F5007D8FAB /* OnboardingTabExtension.swift in Sources */,
3706FABA293F65D500E42796 /* BookmarkOutlineViewDataSource.swift in Sources */,
560EB9332C78946F0080DBC8 /* ContextualOnboardingDialogs.swift in Sources */,
3706FABB293F65D500E42796 /* PasswordManagementBitwardenItemView.swift in Sources */,
1D220BF92B86192200F8BBC6 /* PreferencesEmailProtectionView.swift in Sources */,
9FA173E42B7A12B600EE4E6E /* BookmarkDialogFolderManagementView.swift in Sources */,
Expand Down Expand Up @@ -10649,6 +10676,7 @@
3706FC47293F65D500E42796 /* FavoritesView.swift in Sources */,
3706FC48293F65D500E42796 /* HomePage.swift in Sources */,
56A0543F2C215FB3007D8FAB /* OnboardingUserScript.swift in Sources */,
560EB93A2C789A450080DBC8 /* OnboardingSuggestedSearchesProvider.swift in Sources */,
3706FC49293F65D500E42796 /* RoundedSelectionRowView.swift in Sources */,
4B9DB01E2A983B24000927DB /* Waitlist.swift in Sources */,
3706FC4A293F65D500E42796 /* LocalStatisticsStore.swift in Sources */,
Expand Down Expand Up @@ -10864,6 +10892,7 @@
3706FE03293F661700E42796 /* CoreDataStoreTests.swift in Sources */,
1D9FDEC42B9B63C90040B78C /* DataClearingPreferencesTests.swift in Sources */,
3706FE04293F661700E42796 /* TreeControllerTests.swift in Sources */,
56CE77622C7DFCF800AC1ED2 /* OnboardingSuggestedSearchesProviderTests.swift in Sources */,
3706FE05293F661700E42796 /* DownloadsWebViewMock.m in Sources */,
3706FE06293F661700E42796 /* CoreDataEncryptionTesting.xcdatamodeld in Sources */,
56BA1E7F2BAB2D29001CF69F /* ErrorPageTabExtensionTest.swift in Sources */,
Expand Down Expand Up @@ -11668,6 +11697,7 @@
B6AAAC2D260330580029438D /* PublishedAfter.swift in Sources */,
3701C9CE29BD040C00305B15 /* FirefoxBerkeleyDatabaseReader.swift in Sources */,
37054FCE2876472D00033B6F /* WebViewSnapshotView.swift in Sources */,
560EB9392C789A450080DBC8 /* OnboardingSuggestedSearchesProvider.swift in Sources */,
4BBC16A027C4859400E00A38 /* DeviceAuthenticationService.swift in Sources */,
CB24F70C29A3D9CB006DCC58 /* AppConfigurationURLProvider.swift in Sources */,
1DEF3BAD2BD145A9004A2FBA /* AutoClearHandler.swift in Sources */,
Expand Down Expand Up @@ -11928,6 +11958,7 @@
C13909EF2B85FD4E001626ED /* AutofillActionExecutor.swift in Sources */,
4BB88B5B25B7BA50006F6B06 /* Instruments.swift in Sources */,
3768D8442C2CC884004120AE /* RemoteMessagingConfigMatcherProvider.swift in Sources */,
560EB9322C78946F0080DBC8 /* ContextualOnboardingDialogs.swift in Sources */,
9812D895276CEDA5004B6181 /* ContentBlockerRulesLists.swift in Sources */,
4B0511E2262CAA8600F6079C /* NSViewControllerExtension.swift in Sources */,
C16127EE2BDFB46400966BB9 /* DataImportShortcutsView.swift in Sources */,
Expand Down Expand Up @@ -12295,6 +12326,7 @@
4B9292BB2667103100AD2C21 /* BookmarkNodeTests.swift in Sources */,
4B0219A825E0646500ED7DEA /* WebsiteDataStoreTests.swift in Sources */,
AAC9C01E24CB6BEB00AD1325 /* TabCollectionViewModelTests.swift in Sources */,
56CE77612C7DFCF800AC1ED2 /* OnboardingSuggestedSearchesProviderTests.swift in Sources */,
B662D3DE275613BB0035D4D6 /* EncryptionKeyStoreMock.swift in Sources */,
1D3B1ABF29369FC8006F4388 /* BWEncryptionTests.swift in Sources */,
B6F56567299A414300A04298 /* WKWebViewMockingExtension.swift in Sources */,
Expand Down Expand Up @@ -13893,6 +13925,16 @@
package = 4311906792B7676CE9535D76 /* XCRemoteSwiftPackageReference "BrowserServicesKit" */;
productName = Crashes;
};
560EB9342C7897370080DBC8 /* Onboarding */ = {
isa = XCSwiftPackageProductDependency;
package = 9807F643278CA16F00E1547B /* XCRemoteSwiftPackageReference "BrowserServicesKit" */;
productName = Onboarding;
};
560EB9362C78974C0080DBC8 /* Onboarding */ = {
isa = XCSwiftPackageProductDependency;
package = 9807F643278CA16F00E1547B /* XCRemoteSwiftPackageReference "BrowserServicesKit" */;
productName = Onboarding;
};
7B00997C2B6508B700FE7C31 /* NetworkProtectionProxy */ = {
isa = XCSwiftPackageProductDependency;
productName = NetworkProtectionProxy;
Expand Down
24 changes: 24 additions & 0 deletions DuckDuckGo/Common/Localizables/UserText.swift
Original file line number Diff line number Diff line change
Expand Up @@ -1246,6 +1246,30 @@ struct UserText {
}
}
}

// MARK: - Onboarding
enum ContextualOnboarding {
static let onboardingTryASearchTitle = NSLocalizedString("contextual.onboarding.try-a-search.title", value: "Try a search!", comment: "Title of a popover on the browser that invites the user to try a search")
static let onboardingTryASearchMessage = NSLocalizedString("contextual.onboarding.try-a-search.message", value: "Your DuckDuckGo searches are always anonymous.", comment: "Message of a popover on the browser that invites the user to try a search explaining that their searches are anonymous")
static let onboardingTryASiteTitle = NSLocalizedString("contextual.onboarding.try-a-site.title", value: "Next, try visiting a site!", comment: "Title of a popover on the browser that invites the user to try a visiting a website")
static let onboardingTryASiteNTPTitle = NSLocalizedString("contextual.onboarding.ntp.try-a-site.title", value: "Try visiting a site!", comment: "Title of a popover on the new tab page browser that invites the user to try a visiting a website")
static let onboardingTryASiteMessage = NSLocalizedString("contextual.onboarding.try-a-site.message", value: "I’ll block trackers so they can’t spy on you.", comment: "Message of a popover on the browser that invites the user to try visiting a website to explain that we block trackers")
static let onboardingTryFireButtonMessage = NSLocalizedString("contextual.onboarding.try-fire-button.message", value: "Instantly clear your browsing activity with the Fire Button.\n\nGive it a try! 🔥", comment: "Message of a popover on the browser that invites the user to try visiting the browser Fire Button. Please leave the line break")
static let onboardingGotItButton = NSLocalizedString("contextual.onboarding.got-it.button", value: "Got it", comment: "During onboarding steps this button is shown and takes either to the next steps or closes the onboarding.")
static let onboardingFirstSearchDoneTitle = NSLocalizedString("contextual.onboarding.first-search-done.title", value: "That’s DuckDuckGo Search.", comment: "After the user performs their first search using the browser, this dialog explains the advantages of using DuckDuckGo")
static let onboardingFirstSearchDoneMessage = NSLocalizedString("contextual.onboarding.first-search-done.message", value: "Private. Fast. Fewer ads.", comment: "After the user performs their first search using the browser, this dialog explains the advantages of using DuckDuckGo")
static let onboardingFinalScreenTitle = NSLocalizedString("contextual.onboarding.final-screen.title", value: "You’ve got this!", comment: "Title of the last screen of the onboarding to the browser app")
static let onboardingFinalScreenMessage = NSLocalizedString("contextual.onboarding.final-screen.message", value: "Remember: every time you browse with me a creepy ad loses its wings. 👌", comment: "Message of the last screen of the onboarding to the browser app.")
static let onboardingFinalScreenButton = NSLocalizedString("contextual.onboarding.final-screen.button", value: "High five!", comment: "Button on the last screen of the onboarding, it will dismiss the onboarding screen.")
static let tryASearchOption1English = NSLocalizedString("contextual.onboarding.try-search.option1-English", value: "how to say “duck” in spanish", comment: "Browser Search query for how to say duck in english")
static let tryASearchOption1International = NSLocalizedString("contextual.onboarding.try-search.option1international", value: "how to say “duck” in english", comment: "Browser Search query for how to say duck in english")
static let tryASearchOption2English = NSLocalizedString("contextual.onboarding.try-search.option2-english", value: "mighty ducks cast", comment: "Search query for the cast of Mighty Ducks")
static let tryASearchOption2International = NSLocalizedString("contextual.onboarding.try-search.option2-international", value: "cast of avatar", comment: "Search query for the cast of Avatar")
static let tryASearchOption3 = NSLocalizedString("contextual.onboarding.try-search.option3", value: "local weather", comment: "Browser Search query for local weather")
static let tryASearchOptionSurpriseMeTitle = NSLocalizedString("contextual.onboarding.try-search.surprise-me-title", value: "Surprise me!", comment: "Title for a button that triggers an unknown search query for the user.")
static let tryASearchOptionSurpriseMeEnglish = NSLocalizedString("contextual.onboarding.try-search.surprise-me-english", value: "chocolate chip cookie recipes", comment: "Browser Search query for chocolate chip cookie recipes")
static let tryASearchOptionSurpriseMeInternational = NSLocalizedString("contextual.onboarding.try-search.surprise-me-international", value: "dinner recipes", comment: "Browser Search query for dinner recipes")
}

// Key: "subscription.menu.item"
// Comment: "Title for Subscription item in the options menu"
Expand Down
Loading

0 comments on commit 60df756

Please sign in to comment.