Skip to content

Commit

Permalink
Merge pull request #1583 from Adyen/fix/redirect-callback-leak
Browse files Browse the repository at this point in the history
Fix redirect callback leak
  • Loading branch information
OscarSpruit committed Apr 25, 2024
2 parents 5eacb37 + c7339aa commit 4e32d47
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 3 deletions.
Expand Up @@ -196,6 +196,11 @@ internal class DefaultGenericActionDelegate(
}

override fun setOnRedirectListener(listener: () -> Unit) {
_delegate?.let { delegate ->
if (delegate is RedirectableDelegate) {
delegate.setOnRedirectListener(listener)
}
}
onRedirectListener = listener
}

Expand Down
Expand Up @@ -23,11 +23,12 @@ import com.adyen.checkout.core.internal.util.adyenLog
import com.adyen.checkout.ui.core.internal.util.ThemeUtil
import org.json.JSONException
import org.json.JSONObject
import java.lang.ref.WeakReference

@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
class DefaultRedirectHandler : RedirectHandler {

private var onRedirectListener: (() -> Unit)? = null
private var onRedirectListener: WeakReference<(() -> Unit)>? = null

override fun parseRedirectResult(data: Uri?): JSONObject {
adyenLog(AdyenLogLevel.DEBUG) { "parseRedirectResult - $data" }
Expand Down Expand Up @@ -72,7 +73,7 @@ class DefaultRedirectHandler : RedirectHandler {
launchWithCustomTabs(context, uri) ||
launchBrowser(context, uri)
) {
onRedirectListener?.invoke()
onRedirectListener?.get()?.invoke()
return
}

Expand Down Expand Up @@ -194,10 +195,11 @@ class DefaultRedirectHandler : RedirectHandler {
}

override fun setOnRedirectListener(listener: () -> Unit) {
onRedirectListener = listener
onRedirectListener = WeakReference(listener)
}

override fun removeOnRedirectListener() {
onRedirectListener?.clear()
onRedirectListener = null
}

Expand Down

0 comments on commit 4e32d47

Please sign in to comment.