Skip to content

Commit 27230f3

Browse files
author
Giorgio Ruscigno
committed
Refactor migration views to use MigrationCenterViewConfiguration
1 parent 489dbbd commit 27230f3

File tree

10 files changed

+87
-47
lines changed

10 files changed

+87
-47
lines changed

WordPress/Jetpack/Classes/ViewRelated/WordPress-to-Jetpack Migration/All done/MigrationDoneCenterView.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ class MigrationDoneCenterView: UIView {
3939
}
4040

4141
private enum Appearance {
42-
4342
static let iconImage = UIImage(named: "wp-migration-icon-with-badge")
4443
}
4544
}

WordPress/Jetpack/Classes/ViewRelated/WordPress-to-Jetpack Migration/All done/MigrationDoneViewController.swift

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,21 +16,10 @@ class MigrationDoneViewController: UIViewController {
1616
override func loadView() {
1717
let centerContentView = MigrationDoneCenterView()
1818
let centerView = MigrationCenterView(contentView: centerContentView,
19-
descriptionText: TextContent.description,
20-
highlightedDescriptionText: TextContent.highlightedDescription)
19+
configuration: viewModel.configuration.centerViewConfiguration)
2120

2221
view = MigrationStepView(headerView: MigrationHeaderView(configuration: viewModel.configuration.headerConfiguration),
2322
actionsView: MigrationActionsView(configuration: viewModel.configuration.actionsConfiguration),
2423
centerView: centerView)
2524
}
26-
27-
enum TextContent {
28-
29-
static let description = NSLocalizedString("migration.done.footer",
30-
value: "Please delete the WordPress app to avoid data conflicts.",
31-
comment: "Footer for the migration done screen.")
32-
static let highlightedDescription = NSLocalizedString("migration.done.footer.highlighted",
33-
value: "delete the WordPress app",
34-
comment: "Highlighted text in the footer of the migration done screen.")
35-
}
3625
}

WordPress/Jetpack/Classes/ViewRelated/WordPress-to-Jetpack Migration/All done/MigrationDoneViewModel.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,13 @@ class MigrationDoneViewModel {
66

77
let headerConfiguration = MigrationHeaderConfiguration(step: .done)
88

9+
let centerViewConfigurartion = MigrationCenterViewConfiguration(step: .done)
10+
911
let actionsConfiguration = MigrationActionsViewConfiguration(step: .done, primaryHandler: { [weak coordinator] in
1012
coordinator?.transitionToNextStep()
1113
})
1214
configuration = MigrationStepConfiguration(headerConfiguration: headerConfiguration,
15+
centerViewConfiguration: centerViewConfigurartion,
1316
actionsConfiguration: actionsConfiguration)
1417
}
1518
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
struct MigrationCenterViewConfiguration {
2+
3+
let attributedText: NSAttributedString
4+
5+
init(step: MigrationStep) {
6+
self.attributedText = Appearance.highlightText(Appearance.highlightedText(for: step), inString: Appearance.text(for: step))
7+
}
8+
}
9+
10+
private extension MigrationCenterViewConfiguration {
11+
12+
enum Appearance {
13+
14+
static let notificationsText = NSLocalizedString("migration.notifications.footer",
15+
value: "When the alert apears tap Allow to continue receiving all your WordPress notifications.",
16+
comment: "Footer for the migration notifications screen.")
17+
static let notificationsHighlightedText = NSLocalizedString("migration.notifications.footer.highlighted",
18+
value: "Allow",
19+
comment: "Highlighted text in the footer of the migration notifications screen.")
20+
21+
static let doneText = NSLocalizedString("migration.done.footer",
22+
value: "Please delete the WordPress app to avoid data conflicts.",
23+
comment: "Footer for the migration done screen.")
24+
static let doneHighlightedText = NSLocalizedString("migration.done.footer.highlighted",
25+
value: "delete the WordPress app",
26+
comment: "Highlighted text in the footer of the migration done screen.")
27+
28+
static func text(for step: MigrationStep) -> String {
29+
switch step {
30+
case .notifications:
31+
return notificationsText
32+
case .done:
33+
return doneText
34+
default:
35+
return ""
36+
}
37+
}
38+
39+
static func highlightedText(for step: MigrationStep) -> String {
40+
switch step {
41+
case .notifications:
42+
return notificationsHighlightedText
43+
case .done:
44+
return doneHighlightedText
45+
default:
46+
return ""
47+
}
48+
}
49+
50+
static func highlightText(_ subString: String, inString: String) -> NSAttributedString {
51+
let attributedString = NSMutableAttributedString(string: inString)
52+
53+
guard let subStringRange = inString.nsRange(of: subString) else {
54+
return attributedString
55+
}
56+
57+
attributedString.addAttributes([.font: WPStyleGuide.fontForTextStyle(.footnote, fontWeight: .bold)],
58+
range: subStringRange)
59+
return attributedString
60+
}
61+
}
62+
}
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
struct MigrationStepConfiguration {
22
let headerConfiguration: MigrationHeaderConfiguration
3+
let centerViewConfiguration: MigrationCenterViewConfiguration?
34
let actionsConfiguration: MigrationActionsViewConfiguration
45
}

WordPress/Jetpack/Classes/ViewRelated/WordPress-to-Jetpack Migration/Common/Views/MigrationCenterView.swift

Lines changed: 6 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@ class MigrationCenterView: UIView {
55

66
private let contentView: UIView
77

8-
private let descriptionText: String
9-
10-
private let highlightedDescriptionText: String
8+
private let configuration: MigrationCenterViewConfiguration?
119

1210
private lazy var descriptionLabel: UILabel = {
1311
let label = UILabel()
1412
label.font = WPStyleGuide.fontForTextStyle(.footnote, fontWeight: .regular)
15-
label.attributedText = Appearance.highlightString(highlightedDescriptionText, inString: descriptionText)
13+
if let configuration {
14+
label.attributedText = configuration.attributedText
15+
}
1616
label.textColor = Appearance.descriptionTextColor
1717
label.numberOfLines = 0
1818
return label
@@ -27,10 +27,9 @@ class MigrationCenterView: UIView {
2727
return stackView
2828
}()
2929

30-
init(contentView: UIView, descriptionText: String, highlightedDescriptionText: String) {
30+
init(contentView: UIView, configuration: MigrationCenterViewConfiguration?) {
3131
self.contentView = contentView
32-
self.descriptionText = descriptionText
33-
self.highlightedDescriptionText = highlightedDescriptionText
32+
self.configuration = configuration
3433
super.init(frame: .zero)
3534
addSubview(mainStackView)
3635
pinSubviewToAllEdges(mainStackView)
@@ -42,18 +41,6 @@ class MigrationCenterView: UIView {
4241

4342
private enum Appearance {
4443

45-
static func highlightString(_ subString: String, inString: String) -> NSAttributedString {
46-
let attributedString = NSMutableAttributedString(string: inString)
47-
48-
guard let subStringRange = inString.nsRange(of: subString) else {
49-
return attributedString
50-
}
51-
52-
attributedString.addAttributes([.font: WPStyleGuide.fontForTextStyle(.footnote, fontWeight: .bold)],
53-
range: subStringRange)
54-
return attributedString
55-
}
56-
5744
static let fakeAlertToDescriptionSpacing: CGFloat = 20
5845

5946
static let descriptionTextColor = UIColor(light: .muriel(color: .gray, .shade50), dark: .muriel(color: .gray, .shade10))

WordPress/Jetpack/Classes/ViewRelated/WordPress-to-Jetpack Migration/Notifications Permission/MigrationNotificationsViewController.swift

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,21 +16,10 @@ class MigrationNotificationsViewController: UIViewController {
1616
override func loadView() {
1717
let centerContentView = MigrationNotificationsCenterView()
1818
let centerView = MigrationCenterView(contentView: centerContentView,
19-
descriptionText: TextContent.description,
20-
highlightedDescriptionText: TextContent.highlightedDescription)
19+
configuration: viewModel.configuration.centerViewConfiguration)
2120

2221
view = MigrationStepView(headerView: MigrationHeaderView(configuration: viewModel.configuration.headerConfiguration),
2322
actionsView: MigrationActionsView(configuration: viewModel.configuration.actionsConfiguration),
2423
centerView: centerView)
2524
}
26-
27-
enum TextContent {
28-
29-
static let description = NSLocalizedString("migration.notifications.footer",
30-
value: "When the alert apears tap Allow to continue receiving all your WordPress notifications.",
31-
comment: "Footer for the migration notifications screen.")
32-
static let highlightedDescription = NSLocalizedString("migration.notifications.footer.highlighted",
33-
value: "Allow",
34-
comment: "Highlighted text in the footer of the migration notifications screen.")
35-
}
3625
}

WordPress/Jetpack/Classes/ViewRelated/WordPress-to-Jetpack Migration/Notifications Permission/MigrationNotificationsViewModel.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ class MigrationNotificationsViewModel {
88

99
let headerConfiguration = MigrationHeaderConfiguration(step: .notifications)
1010

11+
let centerViewConfigurartion = MigrationCenterViewConfiguration(step: .notifications)
12+
1113
let actionsConfiguration = MigrationActionsViewConfiguration(step: .notifications,
1214
primaryHandler: {
1315
InteractiveNotificationsManager.shared.requestAuthorization { [weak coordinator] authorized in
@@ -18,6 +20,8 @@ class MigrationNotificationsViewModel {
1820
coordinator?.transitionToNextStep()
1921
})
2022

21-
configuration = MigrationStepConfiguration(headerConfiguration: headerConfiguration, actionsConfiguration: actionsConfiguration)
23+
configuration = MigrationStepConfiguration(headerConfiguration: headerConfiguration,
24+
centerViewConfiguration: centerViewConfigurartion,
25+
actionsConfiguration: actionsConfiguration)
2226
}
2327
}

WordPress/Jetpack/Classes/ViewRelated/WordPress-to-Jetpack Migration/Welcome/MigrationWelcomeViewModel.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ final class MigrationWelcomeViewModel {
3030
},
3131
secondaryHandler: { })
3232

33-
configuration = MigrationStepConfiguration(headerConfiguration: headerConfiguration, actionsConfiguration: actionsConfiguration)
33+
configuration = MigrationStepConfiguration(headerConfiguration: headerConfiguration,
34+
centerViewConfiguration: nil,
35+
actionsConfiguration: actionsConfiguration)
3436
}
3537
}

WordPress/WordPress.xcodeproj/project.pbxproj

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -835,6 +835,7 @@
835835
3FF15A5A291EC56700E1B4E5 /* MigrationDoneCenterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FF15A59291EC56700E1B4E5 /* MigrationDoneCenterView.swift */; };
836836
3FF15A5C291ED21100E1B4E5 /* MigrationNotificationsCenterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FF15A5B291ED21100E1B4E5 /* MigrationNotificationsCenterView.swift */; };
837837
3FF1A853242D5FCB00373F5D /* WPTabBarController+ReaderTabNavigation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FF1A852242D5FCB00373F5D /* WPTabBarController+ReaderTabNavigation.swift */; };
838+
3FF717FF291F07AB00323614 /* MigrationCenterViewConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FF717FE291F07AB00323614 /* MigrationCenterViewConfiguration.swift */; };
838839
3FFA5ED22876152E00830E28 /* JetpackButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FFA5ED12876152E00830E28 /* JetpackButton.swift */; };
839840
3FFDEF7829177D7500B625CE /* MigrationNotificationsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FFDEF7729177D7500B625CE /* MigrationNotificationsViewModel.swift */; };
840841
3FFDEF7A29177D8C00B625CE /* MigrationNotificationsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FFDEF7929177D8C00B625CE /* MigrationNotificationsViewController.swift */; };
@@ -6103,6 +6104,7 @@
61036104
3FF15A59291EC56700E1B4E5 /* MigrationDoneCenterView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MigrationDoneCenterView.swift; sourceTree = "<group>"; };
61046105
3FF15A5B291ED21100E1B4E5 /* MigrationNotificationsCenterView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MigrationNotificationsCenterView.swift; sourceTree = "<group>"; };
61056106
3FF1A852242D5FCB00373F5D /* WPTabBarController+ReaderTabNavigation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "WPTabBarController+ReaderTabNavigation.swift"; sourceTree = "<group>"; };
6107+
3FF717FE291F07AB00323614 /* MigrationCenterViewConfiguration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MigrationCenterViewConfiguration.swift; sourceTree = "<group>"; };
61066108
3FFA5ED12876152E00830E28 /* JetpackButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JetpackButton.swift; sourceTree = "<group>"; };
61076109
3FFDEF7729177D7500B625CE /* MigrationNotificationsViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MigrationNotificationsViewModel.swift; sourceTree = "<group>"; };
61086110
3FFDEF7929177D8C00B625CE /* MigrationNotificationsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MigrationNotificationsViewController.swift; sourceTree = "<group>"; };
@@ -10928,6 +10930,7 @@
1092810930
isa = PBXGroup;
1092910931
children = (
1093010932
3FFDEF9029187F2100B625CE /* MigrationActionsConfiguration.swift */,
10933+
3FF717FE291F07AB00323614 /* MigrationCenterViewConfiguration.swift */,
1093110934
3FFDEF8E29187F1200B625CE /* MigrationHeaderConfiguration.swift */,
1093210935
3FFDEF7E29177FB100B625CE /* MigrationStepConfiguration.swift */,
1093310936
);
@@ -16429,9 +16432,9 @@
1642916432
isa = PBXGroup;
1643016433
children = (
1643116434
F41BDD72290BBDCA00B7F2B0 /* MigrationActionsView.swift */,
16435+
3FF15A55291B4EEA00E1B4E5 /* MigrationCenterView.swift */,
1643216436
F4F9D5EB29096CF500502576 /* MigrationHeaderView.swift */,
1643316437
3FFDEF842918215700B625CE /* MigrationStepView.swift */,
16434-
3FF15A55291B4EEA00E1B4E5 /* MigrationCenterView.swift */,
1643516438
3FFDEF8D2918625600B625CE /* Configuration */,
1643616439
);
1643716440
path = Views;
@@ -23386,6 +23389,7 @@
2338623389
FABB246A2602FC2C00C8785C /* WordPressAuthenticationManager.swift in Sources */,
2338723390
FABB246B2602FC2C00C8785C /* SiteManagementService.swift in Sources */,
2338823391
FABB246C2602FC2C00C8785C /* ActivityPostRange.swift in Sources */,
23392+
3FF717FF291F07AB00323614 /* MigrationCenterViewConfiguration.swift in Sources */,
2338923393
FABB246D2602FC2C00C8785C /* ReaderSelectInterestsViewController.swift in Sources */,
2339023394
FABB246E2602FC2C00C8785C /* ReaderShowMenuAction.swift in Sources */,
2339123395
3FFDEF882918596B00B625CE /* MigrationDoneViewModel.swift in Sources */,

0 commit comments

Comments
 (0)