Skip to content

Commit 35332e8

Browse files
authored
Reader: Update Reader quick start tour with new message (#22557)
2 parents 0ecee98 + 19014de commit 35332e8

6 files changed

Lines changed: 53 additions & 20 deletions

File tree

WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ typedef NS_ENUM(NSInteger, QuickStartTourElement) {
6969
QuickStartTourElementSharing = 8,
7070
QuickStartTourElementConnections = 9,
7171
QuickStartTourElementReaderTab = 10,
72-
QuickStartTourElementReaderDiscoverSettings = 12,
72+
QuickStartTourElementReaderDiscoverSubscriptions = 12,
7373
QuickStartTourElementTourCompleted = 13,
7474
QuickStartTourElementCongratulations = 14,
7575
QuickStartTourElementSiteIcon = 15,

WordPress/Classes/ViewRelated/Blog/QuickStartTourGuide.swift

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,13 @@ open class QuickStartTourGuide: NSObject {
4242
return tourState.tour.mustBeShownInBlogDetails
4343
}
4444

45+
private var shouldAutoComplete: Bool {
46+
guard let element = currentElement() else {
47+
return false
48+
}
49+
return element.autoCompleteDelay != .never
50+
}
51+
4552
@objc static let shared = QuickStartTourGuide()
4653

4754
private override init() {}
@@ -292,7 +299,7 @@ open class QuickStartTourGuide: NSObject {
292299
}
293300
if element != currentElement {
294301
let blogDetailEvents: [QuickStartTourElement] = [.blogDetailNavigation, .checklist, .themes, .viewSite, .sharing, .siteMenu]
295-
let readerElements: [QuickStartTourElement] = [.readerTab, .readerDiscoverSettings]
302+
let readerElements: [QuickStartTourElement] = [.readerTab, .readerDiscoverSubscriptions]
296303

297304
if blogDetailEvents.contains(element) {
298305
endCurrentTour()
@@ -442,6 +449,15 @@ private extension QuickStartTourGuide {
442449
showStepNotice(waypoint.description)
443450
}
444451

452+
if shouldAutoComplete {
453+
let element = waypoint.element
454+
DispatchQueue.main.asyncAfter(deadline: .now() + element.autoCompleteDelay) {
455+
if element == self.currentElement() {
456+
self.visited(element)
457+
}
458+
}
459+
}
460+
445461
let userInfo: [String: Any] = [
446462
QuickStartTourGuide.notificationElementKey: waypoint.element,
447463
QuickStartTourGuide.notificationDescriptionKey: waypoint.description
@@ -527,3 +543,18 @@ private struct TourState {
527543
var blog: Blog
528544
var step: Int
529545
}
546+
547+
extension QuickStartTourElement {
548+
549+
/// The delay to wait before auto completing the tour step. A value of `.never` means it will
550+
/// not auto complete.
551+
var autoCompleteDelay: DispatchTimeInterval {
552+
switch self {
553+
case .readerDiscoverSubscriptions:
554+
return .seconds(5)
555+
default:
556+
return .never
557+
}
558+
}
559+
560+
}

WordPress/Classes/ViewRelated/Blog/QuickStartTours.swift

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -176,21 +176,35 @@ struct QuickStartFollowTour: QuickStartTour {
176176
var waypoints: [WayPoint] = {
177177
let step1DescriptionBase = NSLocalizedString("Select %@ to find other sites.", comment: "A step in a guided tour for quick start. %@ will be the name of the item to select.")
178178
let step1DescriptionTarget = NSLocalizedString("Reader", comment: "The menu item to select during a guided tour.")
179-
let step1: WayPoint = (element: .readerTab, description: step1DescriptionBase.highlighting(phrase: step1DescriptionTarget, icon: .gridicon(.reader)))
179+
let step1: WayPoint = (element: .readerTab,
180+
description: step1DescriptionBase.highlighting(phrase: step1DescriptionTarget,
181+
icon: UIImage(named: "tab-bar-reader-selected")))
180182

181183
let step2DiscoverDescriptionBase = NSLocalizedString("Use %@ to find sites and tags.", comment: "A step in a guided tour for quick start. %@ will be the name of the item to select.")
182184
let step2DiscoverDescriptionTarget = NSLocalizedString("Discover", comment: "The menu item to select during a guided tour.")
183185
let step2DiscoverDescription = step2DiscoverDescriptionBase.highlighting(phrase: step2DiscoverDescriptionTarget, icon: nil)
184186

185-
let step2SettingsDescriptionBase = NSLocalizedString("Try selecting %@ to add topics you like.", comment: "A step in a guided tour for quick start. %@ will be the name of the item to select.")
186-
let step2SettingsDescriptionTarget = NSLocalizedString("Settings", comment: "The menu item to select during a guided tour.")
187-
let step2SettingsDescription = step2SettingsDescriptionBase.highlighting(phrase: step2SettingsDescriptionTarget, icon: .gridicon(.cog))
187+
let step2SubscriptionDescriptionBase = NSLocalizedString(
188+
"quick.start.reader.2.subscriptions.base",
189+
value: "Try selecting %@ to view subscribed content and manage your subscriptions.",
190+
comment: "A step in a guided tour for quick start. %@ will be a bolded Subscriptions text."
191+
)
192+
let step2SubscriptionDescriptionTarget = NSLocalizedString(
193+
"quick.start.reader.2.subscriptions.target",
194+
value: "Subscriptions",
195+
comment: "The bolded Subscriptions text in the Reader step 2 description for the quick start tour."
196+
)
197+
let step2SubscriptionDescription = step2SubscriptionDescriptionBase.highlighting(
198+
phrase: step2SubscriptionDescriptionTarget,
199+
icon: nil
200+
)
188201

189202
/// Combined description for step 2
190203
let step2Format = NSAttributedString(string: "%@ %@")
191-
let step2Description = NSAttributedString(format: step2Format, args: step2DiscoverDescription, step2SettingsDescription)
204+
let step2Description = NSAttributedString(format: step2Format,
205+
args: step2DiscoverDescription, step2SubscriptionDescription)
192206

193-
let step2: WayPoint = (element: .readerDiscoverSettings, description: step2Description)
207+
let step2: WayPoint = (element: .readerDiscoverSubscriptions, description: step2Description)
194208

195209
return [step1, step2]
196210
}()

WordPress/Classes/ViewRelated/Reader/Manage/ReaderManageScenePresenter.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,6 @@ class ReaderManageScenePresenter {
7070
presentedViewController = navigationController
7171
viewController.present(navigationController, animated: true, completion: nil)
7272

73-
QuickStartTourGuide.shared.visited(.readerDiscoverSettings)
7473
WPAnalytics.track(.readerManageViewDisplayed)
7574
}
7675
}

WordPress/Classes/ViewRelated/Reader/Select Interests/ReaderSelectInterestsViewController.swift

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -344,9 +344,6 @@ extension ReaderSelectInterestsViewController: UICollectionViewDelegate {
344344
spotlightIsShown = false
345345
}
346346

347-
// End reader quick start tour if user selects a topic.
348-
QuickStartTourGuide.shared.visited(.readerDiscoverSettings)
349-
350347
dataSource.interest(for: indexPath.row).toggleSelected()
351348
updateNextButtonState()
352349

WordPress/Classes/ViewRelated/Reader/Tab Navigation/ReaderTabViewController.swift

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -61,14 +61,6 @@ class ReaderTabViewController: UIViewController {
6161
override func viewWillAppear(_ animated: Bool) {
6262
super.viewWillAppear(animated)
6363

64-
if QuickStartTourGuide.shared.isCurrentElement(.readerDiscoverSettings) {
65-
66-
if viewModel.selectedIndex != ReaderTabConstants.discoverIndex {
67-
viewModel.showTab(at: ReaderTabConstants.discoverIndex)
68-
}
69-
70-
// TODO: Revisit Reader spotlight
71-
}
7264
navigationController?.setNavigationBarHidden(true, animated: animated)
7365
}
7466

0 commit comments

Comments
 (0)