Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove onNewIntent Override in MainActivity #311

Merged
merged 4 commits into from
Feb 10, 2025
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 0 additions & 6 deletions Demo/src/main/java/com/paypal/android/MainActivity.kt
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.paypal.android

import android.content.Intent
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
Expand All @@ -22,9 +21,4 @@ class MainActivity : ComponentActivity() {
DemoApp()
}
}

override fun onNewIntent(newIntent: Intent) {
super.onNewIntent(newIntent)
intent = newIntent
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ import com.paypal.android.uishared.components.OrderView
import com.paypal.android.uishared.components.StepHeader
import com.paypal.android.uishared.state.CompletedActionState
import com.paypal.android.utils.OnLifecycleOwnerResumeEffect
import com.paypal.android.utils.OnNewIntentEffect
import com.paypal.android.utils.UIConstants
import com.paypal.android.utils.getActivityOrNull

Expand All @@ -48,7 +49,11 @@ fun ApproveOrderView(
val context = LocalContext.current
OnLifecycleOwnerResumeEffect {
val intent = context.getActivityOrNull()?.intent
intent?.let { viewModel.completeAuthChallenge(intent) }
intent?.let { viewModel.completeAuthChallenge(it) }
Copy link
Collaborator

@KunJeongPark KunJeongPark Jan 29, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why do we need to check onResume as well as newIntent if we are assuming singeTop launch mode?
Is there a chance that this is called the second time in onResume?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a good callout. This is need for process kill, but I do need to make sure we're doing Activity state restoration and I'll debug with "Don't keep activities" to make sure it's being called.

}

OnNewIntentEffect { newIntent ->
viewModel.completeAuthChallenge(newIntent)
}

val contentPadding = UIConstants.paddingMedium
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import com.paypal.android.uishared.components.OrderView
import com.paypal.android.uishared.components.StepHeader
import com.paypal.android.uishared.state.CompletedActionState
import com.paypal.android.utils.OnLifecycleOwnerResumeEffect
import com.paypal.android.utils.OnNewIntentEffect
import com.paypal.android.utils.UIConstants
import com.paypal.android.utils.getActivityOrNull

Expand All @@ -41,7 +42,12 @@ fun PayPalWebView(

val context = LocalContext.current
OnLifecycleOwnerResumeEffect {
context.getActivityOrNull()?.let { viewModel.handleBrowserSwitchResult(it) }
val intent = context.getActivityOrNull()?.intent
intent?.let { viewModel.completeAuthChallenge(it) }
}

OnNewIntentEffect { newIntent ->
viewModel.completeAuthChallenge(newIntent)
}

val contentPadding = UIConstants.paddingMedium
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.paypal.android.ui.paypalweb

import android.content.Context
import android.content.Intent
import android.util.Log
import androidx.activity.ComponentActivity
import androidx.lifecycle.ViewModel
Expand Down Expand Up @@ -148,8 +149,8 @@ class PayPalWebViewModel @Inject constructor(
}
}

fun handleBrowserSwitchResult(activity: ComponentActivity) {
val result = authState?.let { paypalClient?.finishStart(activity.intent, it) }
fun completeAuthChallenge(intent: Intent) {
val result = authState?.let { paypalClient?.finishStart(intent, it) }
when (result) {
is PayPalWebCheckoutFinishStartResult.Success -> {
payPalWebCheckoutState = ActionState.Success(result)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import com.paypal.android.uishared.components.PropertyView
import com.paypal.android.uishared.components.StepHeader
import com.paypal.android.uishared.state.CompletedActionState
import com.paypal.android.utils.OnLifecycleOwnerResumeEffect
import com.paypal.android.utils.OnNewIntentEffect
import com.paypal.android.utils.UIConstants
import com.paypal.android.utils.getActivityOrNull

Expand All @@ -38,7 +39,12 @@ fun PayPalWebVaultView(viewModel: PayPalWebVaultViewModel = hiltViewModel()) {

val context = LocalContext.current
OnLifecycleOwnerResumeEffect {
context.getActivityOrNull()?.let { viewModel.handleBrowserSwitchResult(it) }
val intent = context.getActivityOrNull()?.intent
intent?.let { viewModel.completeAuthChallenge(it) }
}

OnNewIntentEffect { newIntent ->
viewModel.completeAuthChallenge(newIntent)
}

val contentPadding = UIConstants.paddingMedium
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.paypal.android.ui.paypalwebvault

import android.content.Intent
import androidx.activity.ComponentActivity
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
Expand Down Expand Up @@ -123,8 +124,8 @@ class PayPalWebVaultViewModel @Inject constructor(
}
}

fun handleBrowserSwitchResult(activity: ComponentActivity) {
val result = authState?.let { paypalClient?.finishVault(activity.intent, it) }
fun completeAuthChallenge(intent: Intent) {
val result = authState?.let { paypalClient?.finishVault(intent, it) }
when (result) {
is PayPalWebCheckoutFinishVaultResult.Success ->
vaultPayPalState = ActionState.Success(result)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ import com.paypal.android.uishared.components.ErrorView
import com.paypal.android.uishared.components.StepHeader
import com.paypal.android.uishared.state.CompletedActionState
import com.paypal.android.utils.OnLifecycleOwnerResumeEffect
import com.paypal.android.utils.OnNewIntentEffect
import com.paypal.android.utils.UIConstants
import com.paypal.android.utils.getActivityOrNull

Expand All @@ -53,6 +54,10 @@ fun VaultCardView(
intent?.let { viewModel.completeAuthChallenge(it) }
}

OnNewIntentEffect { newIntent ->
viewModel.completeAuthChallenge(newIntent)
}

val contentPadding = UIConstants.paddingMedium
Column(
verticalArrangement = UIConstants.spacingLarge,
Expand Down