woocommerce / woocommerce-android

WooCommerce Android app
https://www.woocommerce.com/mobile
GNU General Public License v2.0
277 stars 135 forks source link

[Wear App] Stores using Application Passwords fails the authentication sync #12132

Closed ThomazFB closed 3 months ago

ThomazFB commented 3 months ago

Summary

The Play Store console reports that 7 users are currently going through a crash in the Wear app when trying to authenticate with a store using an Application Password as the login method.

Exception java.util.NoSuchElementException:
  at org.wordpress.android.fluxc.network.rest.wpapi.applicationpasswords.ApplicationPasswordsConfiguration._get_applicationName_$lambda-0 (ApplicationPasswordsConfiguration.kt:20)
  at org.wordpress.android.fluxc.network.rest.wpapi.applicationpasswords.ApplicationPasswordsConfiguration.$r8$lambda$3VzvA4dpOepIAjhAGZ5u9cHFB3I
  at org.wordpress.android.fluxc.network.rest.wpapi.applicationpasswords.ApplicationPasswordsConfiguration$$ExternalSyntheticLambda0.get
  at java.util.Optional.orElseThrow (Optional.java:404)
  at org.wordpress.android.fluxc.network.rest.wpapi.applicationpasswords.ApplicationPasswordsConfiguration.getApplicationName (ApplicationPasswordsConfiguration.kt:19)
  at org.wordpress.android.fluxc.network.rest.wpapi.applicationpasswords.ApplicationPasswordsStore.getApplicationName (ApplicationPasswordsStore.kt:38)
  at org.wordpress.android.fluxc.network.rest.wpapi.applicationpasswords.ApplicationPasswordsStore.initEncryptedPrefs (ApplicationPasswordsStore.kt:82)
  at org.wordpress.android.fluxc.network.rest.wpapi.applicationpasswords.ApplicationPasswordsStore.access$initEncryptedPrefs (ApplicationPasswordsStore.kt:15)
  at org.wordpress.android.fluxc.network.rest.wpapi.applicationpasswords.ApplicationPasswordsStore$encryptedPreferences$2.invoke (ApplicationPasswordsStore.kt:41)
  at org.wordpress.android.fluxc.network.rest.wpapi.applicationpasswords.ApplicationPasswordsStore$encryptedPreferences$2.invoke (ApplicationPasswordsStore.kt:40)
  at kotlin.SynchronizedLazyImpl.getValue (LazyJVM.kt:74)
  at org.wordpress.android.fluxc.network.rest.wpapi.applicationpasswords.ApplicationPasswordsStore.getEncryptedPreferences (ApplicationPasswordsStore.kt:40)
  at org.wordpress.android.fluxc.network.rest.wpapi.applicationpasswords.ApplicationPasswordsStore.getCredentials$fluxc_release (ApplicationPasswordsStore.kt:46)
  at org.wordpress.android.fluxc.network.rest.wpapi.applicationpasswords.ApplicationPasswordsManager.getApplicationCredentials (ApplicationPasswordsManager.kt:53)
  at org.wordpress.android.fluxc.network.rest.wpapi.applicationpasswords.ApplicationPasswordsNetwork.executeGsonRequest (ApplicationPasswordsNetwork.kt:86)
  at org.wordpress.android.fluxc.network.rest.wpapi.applicationpasswords.ApplicationPasswordsNetwork.executeGsonRequest$default (ApplicationPasswordsNetwork.kt:39)
  at org.wordpress.android.fluxc.network.rest.wpapi.applicationpasswords.ApplicationPasswordsNetwork.executeGetGsonRequest (ApplicationPasswordsNetwork.kt:147)
  at org.wordpress.android.fluxc.network.rest.wpcom.wc.WooNetwork.executeGetGsonRequest (WooNetwork.kt:43)
  at org.wordpress.android.fluxc.network.rest.wpcom.wc.WooNetwork.executeGetGsonRequest$default (WooNetwork.kt:28)
  at org.wordpress.android.fluxc.network.rest.wpcom.wc.WooCommerceRestClient.fetchSiteSettingsGeneral (WooCommerceRestClient.kt:55)
  at org.wordpress.android.fluxc.store.WooCommerceStore$fetchSiteGeneralSettings$2.invokeSuspend (WooCommerceStore.kt:417)
  at org.wordpress.android.fluxc.store.WooCommerceStore$fetchSiteGeneralSettings$2.invoke
  at org.wordpress.android.fluxc.store.WooCommerceStore$fetchSiteGeneralSettings$2.invoke
  at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn (Undispatched.kt:61)
  at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext (Builders.common.kt:163)
  at kotlinx.coroutines.BuildersKt.withContext
  at org.wordpress.android.fluxc.tools.CoroutineEngine.withDefaultContext (CoroutineEngine.kt:34)
  at org.wordpress.android.fluxc.store.WooCommerceStore.fetchSiteGeneralSettings (WooCommerceStore.kt:416)
  at com.woocommerce.android.wear.ui.login.LoginRepository$receiveStoreDataFromPhone$2.invokeSuspend (LoginRepository.kt:53)
  at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith (ContinuationImpl.kt:33)
  at kotlinx.coroutines.DispatchedTask.run (DispatchedTask.kt:104)
  at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely (CoroutineScheduler.kt:585)
  at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask (CoroutineScheduler.kt:802)
  at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker (CoroutineScheduler.kt:706)
  at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run (CoroutineScheduler.kt:693)

Impact

This is an issue quite easy to reproduce, and will increase in numbers if not fixed quickly.

image
dangermattic commented 3 months ago

Thanks for reporting! 👍