@@ -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