From 35b66261da50d34e4194f363a7f948bd5e02393f Mon Sep 17 00:00:00 2001 From: Jay Newstrom Date: Wed, 11 May 2022 10:54:16 -0500 Subject: [PATCH 1/2] Fix long running network requests causing a crash. Fixes #315 --- .../main/java/com/okta/oidc/OktaResultFragment.java | 8 +++----- .../okta/oidc/clients/web/SyncWebAuthClientImpl.java | 11 +++++++++++ 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/library/src/main/java/com/okta/oidc/OktaResultFragment.java b/library/src/main/java/com/okta/oidc/OktaResultFragment.java index ccc0d258..45292257 100644 --- a/library/src/main/java/com/okta/oidc/OktaResultFragment.java +++ b/library/src/main/java/com/okta/oidc/OktaResultFragment.java @@ -60,11 +60,9 @@ public static void addLogoutFragment(WebRequest request, fragment.logoutIntent = createAuthIntent(activity, request.toUri(), customTabOptions, browsers); FragmentManager fragmentManager = activity.getSupportFragmentManager(); - if (!fragmentManager.isDestroyed()) { - fragmentManager.beginTransaction() - .add(fragment, AUTHENTICATION_REQUEST) - .commit(); - } + fragmentManager.beginTransaction() + .add(fragment, AUTHENTICATION_REQUEST) + .commit(); } @Override diff --git a/library/src/main/java/com/okta/oidc/clients/web/SyncWebAuthClientImpl.java b/library/src/main/java/com/okta/oidc/clients/web/SyncWebAuthClientImpl.java index a96ed62f..ae552fa8 100644 --- a/library/src/main/java/com/okta/oidc/clients/web/SyncWebAuthClientImpl.java +++ b/library/src/main/java/com/okta/oidc/clients/web/SyncWebAuthClientImpl.java @@ -32,6 +32,7 @@ import androidx.annotation.VisibleForTesting; import androidx.annotation.WorkerThread; import androidx.fragment.app.FragmentActivity; +import androidx.lifecycle.Lifecycle; import com.okta.oidc.AuthenticationPayload; import com.okta.oidc.AuthenticationResultHandler; @@ -184,6 +185,11 @@ private StateResult startSignIn(Activity activity, WebRequest request) CountDownLatch latch = new CountDownLatch(1); if (activity instanceof FragmentActivity) { + if (!((FragmentActivity) activity).getLifecycle().getCurrentState() + .isAtLeast(Lifecycle.State.RESUMED)) { + resetCurrentState(); + return StateResult.canceled(); + } activity.runOnUiThread(() -> addLoginFragment( request, mCustomTabOptions, @@ -318,6 +324,11 @@ private StateResult startSignOut(Activity activity, WebRequest request) CountDownLatch latch = new CountDownLatch(1); AtomicReference resultWrapper = new AtomicReference<>(); if (activity instanceof FragmentActivity) { + if (!((FragmentActivity) activity).getLifecycle().getCurrentState() + .isAtLeast(Lifecycle.State.RESUMED)) { + resetCurrentState(); + return StateResult.canceled(); + } activity.runOnUiThread(() -> addLogoutFragment( request, mCustomTabOptions, From dad6e6a17a924c031f8f5ae0f2b511339570b3ee Mon Sep 17 00:00:00 2001 From: Jay Newstrom Date: Wed, 11 May 2022 11:15:38 -0500 Subject: [PATCH 2/2] Prepare 1.2.5. --- CHANGELOG.md | 5 +++++ README.md | 2 +- build.gradle | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9affae59..5d24e418 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +# 1.2.5 + +### Bug Fix +- [#316](https://github.com/okta/okta-oidc-android/pull/316) Fix a crash during login/logout. + # 1.2.4 ### Bug Fix diff --git a/README.md b/README.md index c6f38572..aebd5563 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,7 @@ It is recommended that your app extends [FragmentActivity][fragment-activity] or Add the `Okta OIDC` dependency to your `build.gradle` file: ```gradle -implementation 'com.okta.android:okta-oidc-android:1.2.4' +implementation 'com.okta.android:okta-oidc-android:1.2.5' ``` The SDK requires Java 8 support. diff --git a/build.gradle b/build.gradle index 385dfb26..6a433713 100644 --- a/build.gradle +++ b/build.gradle @@ -35,7 +35,7 @@ subprojects { ext { versionNum = 19 - versionName = "1.2.4" + versionName = "1.2.5" versionDate = new Date() minSdkVersion = 21 compileSdkVersion = 30