Skip to content

Commit f9940a1

Browse files
authored
Merge pull request #7795 from woocommerce/feat/7468-remember-site-credentials
Site discovery: remember site credentials within the screen that connects to Jetpack through the WP.com account
2 parents 02978be + 52e2b92 commit f9940a1

File tree

1 file changed

+19
-9
lines changed

1 file changed

+19
-9
lines changed

WooCommerce/Classes/Authentication/Navigation Exceptions/WrongAccountErrorViewModel.swift

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ final class WrongAccountErrorViewModel: ULAccountMismatchViewModel {
2323
private var siteXMLRPC: String = ""
2424
private var siteUsername: String = ""
2525
private var jetpackConnectionURL: URL?
26+
private var siteCredentials: WordPressOrgCredentials?
2627

2728
@Published private var isSelfHostedSite = false
2829
@Published private var primaryButtonLoading = false
@@ -46,6 +47,7 @@ final class WrongAccountErrorViewModel: ULAccountMismatchViewModel {
4647
self.jetpackSetupCompletionHandler = onJetpackSetupCompletion
4748
self.authenticatorType = authenticatorType
4849

50+
self.siteCredentials = siteCredentials
4951
if let credentials = siteCredentials {
5052
siteUsername = credentials.username
5153
siteXMLRPC = credentials.xmlrpc
@@ -189,6 +191,13 @@ private extension WrongAccountErrorViewModel {
189191
}
190192
}
191193

194+
func authenticateWithJetpack(siteCredentials: WordPressOrgCredentials, from viewController: UIViewController) {
195+
authenticate(with: siteCredentials)
196+
fetchJetpackConnectionURL { [weak self] url in
197+
self?.showJetpackConnectionWebView(url: url, from: viewController)
198+
}
199+
}
200+
192201
/// Prepares `JetpackConnectionStore` to authenticate subsequent requests to WP.org API.
193202
///
194203
func authenticate(with credentials: WordPressOrgCredentials) {
@@ -220,17 +229,18 @@ private extension WrongAccountErrorViewModel {
220229
}
221230

222231
func showSiteCredentialLoginAndJetpackConnection(from viewController: UIViewController) {
223-
authenticatorType.showSiteCredentialLogin(from: viewController, siteURL: siteURL) { [weak self] credentials in
224-
guard let self = self else { return }
225-
// dismisses the site credential login flow
226-
viewController.dismiss(animated: true)
227-
228-
self.siteXMLRPC = credentials.xmlrpc
229-
self.authenticate(with: credentials)
230-
self.fetchJetpackConnectionURL { [weak self] url in
231-
self?.showJetpackConnectionWebView(url: url, from: viewController)
232+
guard let siteCredentials else {
233+
return authenticatorType.showSiteCredentialLogin(from: viewController, siteURL: siteURL) { [weak self] credentials in
234+
guard let self = self else { return }
235+
// dismisses the site credential login flow
236+
viewController.dismiss(animated: true)
237+
238+
self.siteXMLRPC = credentials.xmlrpc
239+
self.siteCredentials = credentials
240+
self.authenticateWithJetpack(siteCredentials: credentials, from: viewController)
232241
}
233242
}
243+
authenticateWithJetpack(siteCredentials: siteCredentials, from: viewController)
234244
}
235245

236246
func presentConnectToWPComSiteAlert(from viewController: UIViewController) {

0 commit comments

Comments
 (0)