diff --git a/aws-analytics-pinpoint/src/androidTest/java/com/amplifyframework/analytics/pinpoint/PinpointAnalyticsInstrumentationTest.kt b/aws-analytics-pinpoint/src/androidTest/java/com/amplifyframework/analytics/pinpoint/PinpointAnalyticsInstrumentationTest.kt index a7f89824e1..6be6288414 100644 --- a/aws-analytics-pinpoint/src/androidTest/java/com/amplifyframework/analytics/pinpoint/PinpointAnalyticsInstrumentationTest.kt +++ b/aws-analytics-pinpoint/src/androidTest/java/com/amplifyframework/analytics/pinpoint/PinpointAnalyticsInstrumentationTest.kt @@ -34,6 +34,8 @@ import com.amplifyframework.auth.cognito.AWSCognitoAuthPlugin import com.amplifyframework.core.Amplify import com.amplifyframework.hub.HubChannel import com.amplifyframework.hub.HubEvent +import com.amplifyframework.logging.AndroidLoggingPlugin +import com.amplifyframework.logging.LogLevel import com.amplifyframework.testutils.HubAccumulator import com.amplifyframework.testutils.Resources import com.amplifyframework.testutils.Sleep @@ -388,6 +390,7 @@ class PinpointAnalyticsInstrumentationTest { setUniqueId() Amplify.Auth.addPlugin(AWSCognitoAuthPlugin() as AuthPlugin<*>) Amplify.addPlugin(AWSPinpointAnalyticsPlugin()) + Amplify.Logging.addPlugin(AndroidLoggingPlugin(LogLevel.DEBUG)) Amplify.configure(context) Sleep.milliseconds(COGNITO_CONFIGURATION_TIMEOUT) synchronousAuth = SynchronousAuth.delegatingTo(Amplify.Auth) diff --git a/aws-auth-cognito/src/main/java/com/amplifyframework/auth/cognito/CredentialStoreClient.kt b/aws-auth-cognito/src/main/java/com/amplifyframework/auth/cognito/CredentialStoreClient.kt index f44d415462..1354dead92 100644 --- a/aws-auth-cognito/src/main/java/com/amplifyframework/auth/cognito/CredentialStoreClient.kt +++ b/aws-auth-cognito/src/main/java/com/amplifyframework/auth/cognito/CredentialStoreClient.kt @@ -56,12 +56,11 @@ internal class CredentialStoreClient(configuration: AuthConfiguration, context: ) { var capturedSuccess: Result? = null var capturedError: Exception? = null - val token = StateChangeListenerToken() + var token: StateChangeListenerToken? = StateChangeListenerToken() credentialStoreStateMachine.listen( - token, + token as StateChangeListenerToken, { storeState -> logger.verbose("Credential Store State Change: $storeState") - when (storeState) { is CredentialStoreState.Success -> { capturedSuccess = Result.success(storeState.storedCredentials) @@ -72,11 +71,13 @@ internal class CredentialStoreClient(configuration: AuthConfiguration, context: is CredentialStoreState.Idle -> { val success = capturedSuccess val error = capturedError - if (success != null) { - credentialStoreStateMachine.cancel(token) + if (success != null && token != null) { + credentialStoreStateMachine.cancel(token!!) + token = null onSuccess(success) - } else if (error != null) { - credentialStoreStateMachine.cancel(token) + } else if (error != null && token != null) { + credentialStoreStateMachine.cancel(token!!) + token = null onError(error) } }