From 4efb6bcd56ea49d8022c809b7b9d73b8134f5eb8 Mon Sep 17 00:00:00 2001 From: seftena Date: Thu, 23 Apr 2026 11:48:00 -0400 Subject: [PATCH 1/2] Update IDmeAuthManager.kt Force custom window close --- sdk/src/main/kotlin/com/idme/auth/auth/IDmeAuthManager.kt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/sdk/src/main/kotlin/com/idme/auth/auth/IDmeAuthManager.kt b/sdk/src/main/kotlin/com/idme/auth/auth/IDmeAuthManager.kt index c7313e1..c0b930f 100644 --- a/sdk/src/main/kotlin/com/idme/auth/auth/IDmeAuthManager.kt +++ b/sdk/src/main/kotlin/com/idme/auth/auth/IDmeAuthManager.kt @@ -5,6 +5,7 @@ import android.net.Uri import androidx.browser.customtabs.CustomTabsIntent import com.idme.auth.errors.IDmeAuthError import java.util.concurrent.ConcurrentHashMap +import java.lang.ref.WeakReference import kotlinx.coroutines.CompletableDeferred /** @@ -21,6 +22,8 @@ import kotlinx.coroutines.CompletableDeferred internal object IDmeAuthManager { private val pending = ConcurrentHashMap>() + internal var callingActivity: WeakReference? = null + /** * Launches the authentication flow in a Chrome Custom Tab and suspends * until the redirect is received. @@ -33,6 +36,7 @@ internal object IDmeAuthManager { suspend fun launchAuth(activity: Activity, authUrl: String, sessionId: String): String { val deferred = CompletableDeferred() pending[sessionId] = deferred + callingActivity = WeakReference(activity) val customTabsIntent = CustomTabsIntent.Builder() .setShowTitle(true) @@ -45,6 +49,7 @@ internal object IDmeAuthManager { } catch (e: kotlinx.coroutines.CancellationException) { throw IDmeAuthError.UserCancelled } finally { + callingActivity = null pending.remove(sessionId) } } From 8d85a4a44e795699d8d498e111a779172c21a1ef Mon Sep 17 00:00:00 2001 From: seftena Date: Thu, 23 Apr 2026 11:51:04 -0400 Subject: [PATCH 2/2] Update IDmeRedirectActivity.kt Dismiss Chrome Custom Tab automatically after verification completes --- .../kotlin/com/idme/auth/auth/IDmeRedirectActivity.kt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/sdk/src/main/kotlin/com/idme/auth/auth/IDmeRedirectActivity.kt b/sdk/src/main/kotlin/com/idme/auth/auth/IDmeRedirectActivity.kt index 223bd0d..c829873 100644 --- a/sdk/src/main/kotlin/com/idme/auth/auth/IDmeRedirectActivity.kt +++ b/sdk/src/main/kotlin/com/idme/auth/auth/IDmeRedirectActivity.kt @@ -1,6 +1,7 @@ package com.idme.auth.auth import android.app.Activity +import android.content.Intent import android.os.Bundle /** @@ -47,6 +48,13 @@ class IDmeRedirectActivity : Activity() { } else { IDmeAuthManager.handleCancel() } + IDmeAuthManager.callingActivity?.get()?.let { activity -> + val intent = Intent(this, activity::class.java).apply { + flags = Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP + } + startActivity(intent) + } + finish() } }