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

Commit 3e7609d

Browse files
authored
Merge pull request #668 from wordpress-mobile/wcios/7512-crash-loginFields
Login: fix a crash after visiting site credentials screen and then auto-filling WP.com credentials
2 parents dd98be2 + 0a3bf41 commit 3e7609d

File tree

4 files changed

+84
-3
lines changed

4 files changed

+84
-3
lines changed

WordPressAuthenticator.podspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
Pod::Spec.new do |s|
44
s.name = 'WordPressAuthenticator'
5-
s.version = '2.2.1-beta.3'
5+
s.version = '2.2.1-beta.4'
66

77
s.summary = 'WordPressAuthenticator implements an easy and elegant way to authenticate your WordPress Apps.'
88
s.description = <<-DESC

WordPressAuthenticator/Model/LoginFields.swift

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,45 @@ public class LoginFields: NSObject {
5656

5757
return loginFields
5858
}
59+
60+
/// Using a convenience initializer for its Objective-C usage in unit tests.
61+
convenience init(username: String,
62+
password: String,
63+
siteAddress: String,
64+
multifactorCode: String,
65+
nonceInfo: SocialLogin2FANonceInfo?,
66+
nonceUserID: Int,
67+
restrictToWPCom: Bool,
68+
emailAddress: String,
69+
meta: LoginFieldsMeta,
70+
storedCredentials: SafariStoredCredentials?) {
71+
self.init()
72+
self.username = username
73+
self.password = password
74+
self.siteAddress = siteAddress
75+
self.multifactorCode = multifactorCode
76+
self.nonceInfo = nonceInfo
77+
self.nonceUserID = nonceUserID
78+
self.restrictToWPCom = restrictToWPCom
79+
self.emailAddress = emailAddress
80+
self.meta = meta
81+
self.storedCredentials = storedCredentials
82+
}
83+
}
84+
85+
extension LoginFields {
86+
func copy() -> LoginFields {
87+
.init(username: username,
88+
password: password,
89+
siteAddress: siteAddress,
90+
multifactorCode: multifactorCode,
91+
nonceInfo: nonceInfo,
92+
nonceUserID: nonceUserID,
93+
restrictToWPCom: restrictToWPCom,
94+
emailAddress: emailAddress,
95+
meta: meta.copy(),
96+
storedCredentials: storedCredentials)
97+
}
5998
}
6099

61100
/// A helper class for storing safari saved password information.
@@ -116,4 +155,44 @@ public class LoginFieldsMeta: NSObject {
116155
var googleUser: GIDGoogleUser?
117156

118157
var appleUser: AppleUser?
158+
159+
init(emailMagicLinkSource: EmailMagicLinkSource? = nil,
160+
jetpackLogin: Bool = false,
161+
userIsDotCom: Bool = true,
162+
passwordless: Bool = false,
163+
xmlrpcURL: NSURL? = nil,
164+
siteInfo: WordPressComSiteInfo? = nil,
165+
requiredMultifactor: Bool = false,
166+
socialService: SocialServiceName? = nil,
167+
socialServiceIDToken: String? = nil,
168+
googleUser: GIDGoogleUser? = nil,
169+
appleUser: AppleUser? = nil) {
170+
self.emailMagicLinkSource = emailMagicLinkSource
171+
self.jetpackLogin = jetpackLogin
172+
self.userIsDotCom = userIsDotCom
173+
self.passwordless = passwordless
174+
self.xmlrpcURL = xmlrpcURL
175+
self.siteInfo = siteInfo
176+
self.requiredMultifactor = requiredMultifactor
177+
self.socialService = socialService
178+
self.socialServiceIDToken = socialServiceIDToken
179+
self.googleUser = googleUser
180+
self.appleUser = appleUser
181+
}
182+
}
183+
184+
extension LoginFieldsMeta {
185+
func copy() -> LoginFieldsMeta {
186+
.init(emailMagicLinkSource: emailMagicLinkSource,
187+
jetpackLogin: jetpackLogin,
188+
userIsDotCom: userIsDotCom,
189+
passwordless: passwordless,
190+
xmlrpcURL: xmlrpcURL,
191+
siteInfo: siteInfo,
192+
requiredMultifactor: requiredMultifactor,
193+
socialService: socialService,
194+
socialServiceIDToken: socialServiceIDToken,
195+
googleUser: googleUser,
196+
appleUser: appleUser)
197+
}
119198
}

WordPressAuthenticator/Services/LoginFacade.m

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,9 @@ - (void)signInToSelfHosted:(LoginFields *)loginFields
132132
[self.delegate displayRemoteError:error];
133133
};
134134

135-
[self.delegate displayLoginMessage:NSLocalizedString(@"Authenticating", nil)];
135+
if ([self.delegate respondsToSelector:@selector(displayLoginMessage:)]) {
136+
[self.delegate displayLoginMessage:NSLocalizedString(@"Authenticating", nil)];
137+
}
136138

137139
NSString *siteUrl = [NSURL IDNEncodedURL: loginFields.siteAddress];
138140
[self.wordpressXMLRPCAPIFacade guessXMLRPCURLForSite:siteUrl success:guessXMLRPCURLSuccess failure:guessXMLRPCURLFailure];

WordPressAuthenticator/Unified Auth/View Related/Get Started/GetStartedViewController.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -752,7 +752,7 @@ private extension GetStartedViewController {
752752
return
753753
}
754754

755-
vc.loginFields = loginFields
755+
vc.loginFields = loginFields.copy()
756756
vc.dismissBlock = dismissBlock
757757
vc.errorToPresent = errorToPresent
758758

0 commit comments

Comments
 (0)