Skip to content
This repository was archived by the owner on Feb 5, 2025. It is now read-only.

Commit be2787e

Browse files
authored
Merge pull request #36 from wordpress-mobile/feature/35-expose-login-text
Add the ability to override text displayed to the user
2 parents 82394c8 + c7a8c39 commit be2787e

File tree

6 files changed

+77
-6
lines changed

6 files changed

+77
-6
lines changed

WordPressAuthenticator.xcodeproj/project.pbxproj

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,8 @@
9696
B5ED791D207E993E00A8FD8C /* WPAuthenticatorLogging.h in Headers */ = {isa = PBXBuildFile; fileRef = B5ED7918207E993E00A8FD8C /* WPAuthenticatorLogging.h */; settings = {ATTRIBUTES = (Public, ); }; };
9797
B5ED791F207E993E00A8FD8C /* CocoaLumberjack.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ED791A207E993E00A8FD8C /* CocoaLumberjack.swift */; };
9898
B5ED7920207E993E00A8FD8C /* WPAuthenticatorLogging.m in Sources */ = {isa = PBXBuildFile; fileRef = B5ED791B207E993E00A8FD8C /* WPAuthenticatorLogging.m */; };
99+
CE16177521B6D82200B82A47 /* WordPressAuthenticatorDisplayStrings.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE16177421B6D82200B82A47 /* WordPressAuthenticatorDisplayStrings.swift */; };
100+
CE16177821B70C1A00B82A47 /* WordPressAuthenticatorDisplayTextTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE16177721B70C1A00B82A47 /* WordPressAuthenticatorDisplayTextTests.swift */; };
99101
CE1B18C920EEC2C200BECC3F /* SocialService.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE1B18C820EEC2C200BECC3F /* SocialService.swift */; };
100102
CE1B18CC20EEC32400BECC3F /* WordPressCredentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE1B18CB20EEC32400BECC3F /* WordPressCredentials.swift */; };
101103
CE1B18CE20EEC3CB00BECC3F /* WordPressAuthenticatorDelegateProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE1B18CD20EEC3CB00BECC3F /* WordPressAuthenticatorDelegateProtocol.swift */; };
@@ -234,6 +236,8 @@
234236
B5ED791A207E993E00A8FD8C /* CocoaLumberjack.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CocoaLumberjack.swift; sourceTree = "<group>"; };
235237
B5ED791B207E993E00A8FD8C /* WPAuthenticatorLogging.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WPAuthenticatorLogging.m; sourceTree = "<group>"; };
236238
C736FF243DE333FCAB1C2614 /* Pods_WordPressAuthenticator.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_WordPressAuthenticator.framework; sourceTree = BUILT_PRODUCTS_DIR; };
239+
CE16177421B6D82200B82A47 /* WordPressAuthenticatorDisplayStrings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WordPressAuthenticatorDisplayStrings.swift; sourceTree = "<group>"; };
240+
CE16177721B70C1A00B82A47 /* WordPressAuthenticatorDisplayTextTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WordPressAuthenticatorDisplayTextTests.swift; sourceTree = "<group>"; };
237241
CE1B18C820EEC2C200BECC3F /* SocialService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SocialService.swift; sourceTree = "<group>"; };
238242
CE1B18CB20EEC32400BECC3F /* WordPressCredentials.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WordPressCredentials.swift; sourceTree = "<group>"; };
239243
CE1B18CD20EEC3CB00BECC3F /* WordPressAuthenticatorDelegateProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WordPressAuthenticatorDelegateProtocol.swift; sourceTree = "<group>"; };
@@ -291,6 +295,7 @@
291295
isa = PBXGroup;
292296
children = (
293297
B501C03E208FC52500D1E58F /* WordPressAuthenticatorTests.swift */,
298+
CE16177721B70C1A00B82A47 /* WordPressAuthenticatorDisplayTextTests.swift */,
294299
);
295300
path = Authenticator;
296301
sourceTree = "<group>";
@@ -401,6 +406,7 @@
401406
B56090F6208A533200399AE4 /* WordPressSupportSourceTag.swift */,
402407
CE1B18CF20EEC41600BECC3F /* WordPressAuthenticatorConfiguration.swift */,
403408
CE1B18D120EEC44400BECC3F /* WordPressAuthenticatorStyles.swift */,
409+
CE16177421B6D82200B82A47 /* WordPressAuthenticatorDisplayStrings.swift */,
404410
);
405411
path = Authenticator;
406412
sourceTree = "<group>";
@@ -841,6 +847,7 @@
841847
CE1B18D020EEC41600BECC3F /* WordPressAuthenticatorConfiguration.swift in Sources */,
842848
CE1B18D220EEC44400BECC3F /* WordPressAuthenticatorStyles.swift in Sources */,
843849
B56090F0208A527000399AE4 /* FancyAlertViewController+LoginError.swift in Sources */,
850+
CE16177521B6D82200B82A47 /* WordPressAuthenticatorDisplayStrings.swift in Sources */,
844851
CE1B18CE20EEC3CB00BECC3F /* WordPressAuthenticatorDelegateProtocol.swift in Sources */,
845852
B5609110208A54F800399AE4 /* OnePasswordFacade.swift in Sources */,
846853
B5609109208A54F800399AE4 /* SignupService.swift in Sources */,
@@ -879,6 +886,7 @@
879886
buildActionMask = 2147483647;
880887
files = (
881888
B501C045208FC68700D1E58F /* LoginFieldsValidationTests.swift in Sources */,
889+
CE16177821B70C1A00B82A47 /* WordPressAuthenticatorDisplayTextTests.swift in Sources */,
882890
B501C048208FC79C00D1E58F /* LoginFacadeTests.m in Sources */,
883891
B501C046208FC6A700D1E58F /* WordPressAuthenticatorTests.swift in Sources */,
884892
);

WordPressAuthenticator/Authenticator/WordPressAuthenticator.swift

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,10 @@ import WordPressUI
3636
///
3737
public let style: WordPressAuthenticatorStyle
3838

39+
/// Authenticator's Display Texts.
40+
///
41+
public let displayStrings: WordPressAuthenticatorDisplayStrings
42+
3943
/// Notification to be posted whenever the signing flow completes.
4044
///
4145
@objc public static let WPSigninDidFinishNotification = "WPSigninDidFinishNotification"
@@ -55,19 +59,24 @@ import WordPressUI
5559

5660
/// Designated Initializer
5761
///
58-
private init(configuration: WordPressAuthenticatorConfiguration, style: WordPressAuthenticatorStyle) {
62+
private init(configuration: WordPressAuthenticatorConfiguration,
63+
style: WordPressAuthenticatorStyle,
64+
displayStrings: WordPressAuthenticatorDisplayStrings) {
5965
self.configuration = configuration
6066
self.style = style
67+
self.displayStrings = displayStrings
6168
}
6269

6370
/// Initializes the WordPressAuthenticator with the specified Configuration.
6471
///
65-
public static func initialize(configuration: WordPressAuthenticatorConfiguration, style: WordPressAuthenticatorStyle = .defaultStyle) {
72+
public static func initialize(configuration: WordPressAuthenticatorConfiguration,
73+
style: WordPressAuthenticatorStyle = .defaultStyle,
74+
displayStrings: WordPressAuthenticatorDisplayStrings = .defaultStrings) {
6675
guard privateInstance == nil else {
6776
fatalError("WordPressAuthenticator is already initialized")
6877
}
6978

70-
privateInstance = WordPressAuthenticator(configuration: configuration, style: style)
79+
privateInstance = WordPressAuthenticator(configuration: configuration, style: style, displayStrings: displayStrings)
7180
}
7281

7382
// MARK: - Public Methods
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import Foundation
2+
3+
4+
// MARK: - WordPress Authenticator Display Strings
5+
//
6+
public struct WordPressAuthenticatorDisplayStrings {
7+
/// Strings: Login instructions.
8+
///
9+
public let emailLoginInstructions: String
10+
11+
public let jetpackLoginInstructions: String
12+
13+
public let siteLoginInstructions: String
14+
15+
/// Designated initializer.
16+
///
17+
public init(emailLoginInstructions: String, jetpackLoginInstructions: String, siteLoginInstructions: String) {
18+
self.emailLoginInstructions = emailLoginInstructions
19+
self.jetpackLoginInstructions = jetpackLoginInstructions
20+
self.siteLoginInstructions = siteLoginInstructions
21+
}
22+
}
23+
24+
public extension WordPressAuthenticatorDisplayStrings {
25+
public static var defaultStrings: WordPressAuthenticatorDisplayStrings {
26+
return WordPressAuthenticatorDisplayStrings(emailLoginInstructions: NSLocalizedString("Log in to WordPress.com using an email address to manage all your WordPress sites.", comment: "Instruction text on the login's email address screen."),
27+
jetpackLoginInstructions: NSLocalizedString("Log in to the WordPress.com account you used to connect Jetpack.", comment: "Instruction text on the login's email address screen."),
28+
siteLoginInstructions: NSLocalizedString("Enter the address of your WordPress site you'd like to connect.", comment: "Instruction text on the login's site addresss screen."))
29+
}
30+
}

WordPressAuthenticator/Signin/LoginEmailViewController.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,9 +101,9 @@ open class LoginEmailViewController: LoginViewController, NUXKeyboardResponder {
101101
///
102102
func localizeControls() {
103103
if loginFields.meta.jetpackLogin {
104-
instructionLabel?.text = NSLocalizedString("Log in to the WordPress.com account you used to connect Jetpack.", comment: "Instruction text on the login's email address screen.")
104+
instructionLabel?.text = WordPressAuthenticator.shared.displayStrings.jetpackLoginInstructions
105105
} else {
106-
instructionLabel?.text = NSLocalizedString("Log in to WordPress.com using an email address to manage all your WordPress sites.", comment: "Instruction text on the login's email address screen.")
106+
instructionLabel?.text = WordPressAuthenticator.shared.displayStrings.emailLoginInstructions
107107
}
108108
emailTextField.placeholder = NSLocalizedString("Email address", comment: "Placeholder for a textfield. The user may enter their email address.")
109109
emailTextField.accessibilityIdentifier = "Email address"

WordPressAuthenticator/Signin/LoginSiteAddressViewController.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ class LoginSiteAddressViewController: LoginViewController, NUXKeyboardResponder
6767
/// Assigns localized strings to various UIControl defined in the storyboard.
6868
///
6969
@objc func localizeControls() {
70-
instructionLabel?.text = NSLocalizedString("Enter the address of your WordPress site you'd like to connect.", comment: "Instruction text on the login's site addresss screen.")
70+
instructionLabel?.text = WordPressAuthenticator.shared.displayStrings.siteLoginInstructions
7171

7272
siteURLField.placeholder = NSLocalizedString("example.wordpress.com", comment: "Site Address placeholder")
7373

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import XCTest
2+
@testable import WordPressAuthenticator
3+
4+
// MARK: - WordPressAuthenticator Display Text Unit Tests
5+
//
6+
class WordPressAuthenticatorDisplayTextTests: XCTestCase {
7+
/// Default display text instance
8+
///
9+
let displayTextDefaults = WordPressAuthenticatorDisplayStrings.defaultText
10+
11+
/// Verifies that values in defaultText are not nil
12+
///
13+
func testThatDefaultTextValuesAreNotNil() {
14+
XCTAssertNotNil(displayTextDefaults.emailLoginInstructions)
15+
XCTAssertNotNil(displayTextDefaults.siteLoginInstructions)
16+
}
17+
18+
/// Verifies that values in defaultText are not empty strings
19+
///
20+
func testThatDefaultTextValuesAreNotEmpty() {
21+
XCTAssertFalse(displayTextDefaults.emailLoginInstructions.isEmpty)
22+
XCTAssertFalse(displayTextDefaults.siteLoginInstructions.isEmpty)
23+
}
24+
}

0 commit comments

Comments
 (0)