diff --git a/v4/core/src/main/java/exchange/dydx/trading/TradingActivity.kt b/v4/core/src/main/java/exchange/dydx/trading/TradingActivity.kt index 594a2d75..d279c6a6 100644 --- a/v4/core/src/main/java/exchange/dydx/trading/TradingActivity.kt +++ b/v4/core/src/main/java/exchange/dydx/trading/TradingActivity.kt @@ -34,7 +34,7 @@ import exchange.dydx.trading.core.biometric.DydxBiometricPrompt import exchange.dydx.trading.core.biometric.DydxBiometricView import exchange.dydx.trading.feature.shared.PreferenceKeys import exchange.dydx.trading.feature.shared.analytics.AnalyticsEvent -import exchange.dydx.trading.integration.fcm.PushPermissionRequester +import exchange.dydx.trading.integration.fcm.PushPermissionRequesterProtocol import exchange.dydx.utilities.utils.SharedPreferencesStore import kotlinx.coroutines.launch import javax.inject.Inject @@ -58,7 +58,7 @@ class TradingActivity : FragmentActivity() { @Inject lateinit var abacusStateManager: AbacusStateManager - @Inject lateinit var pushPermissionRequester: PushPermissionRequester + @Inject lateinit var pushPermissionRequester: PushPermissionRequesterProtocol override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) diff --git a/v4/feature/trade/src/main/java/exchange/dydx/trading/feature/trade/tradestatus/components/DydxTradeStatusCtaButtonViewModel.kt b/v4/feature/trade/src/main/java/exchange/dydx/trading/feature/trade/tradestatus/components/DydxTradeStatusCtaButtonViewModel.kt index 291c42e7..0b286f82 100644 --- a/v4/feature/trade/src/main/java/exchange/dydx/trading/feature/trade/tradestatus/components/DydxTradeStatusCtaButtonViewModel.kt +++ b/v4/feature/trade/src/main/java/exchange/dydx/trading/feature/trade/tradestatus/components/DydxTradeStatusCtaButtonViewModel.kt @@ -9,7 +9,7 @@ import exchange.dydx.platformui.components.buttons.PlatformButtonState import exchange.dydx.trading.common.DydxViewModel import exchange.dydx.trading.common.navigation.DydxRouter import exchange.dydx.trading.feature.trade.streams.MutableTradeStreaming -import exchange.dydx.trading.integration.fcm.PushPermissionRequester +import exchange.dydx.trading.integration.fcm.PushPermissionRequesterProtocol import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.map @@ -21,7 +21,7 @@ class DydxTradeStatusCtaButtonViewModel @Inject constructor( private val router: DydxRouter, private val tradeStream: MutableTradeStreaming, private val savedStateHandle: SavedStateHandle, - private val pushPermissionRequester: PushPermissionRequester, + private val pushPermissionRequester: PushPermissionRequesterProtocol, ) : ViewModel(), DydxViewModel { private enum class TradeType { diff --git a/v4/integration/fcm/src/main/java/exchange/dydx/trading/integration/fcm/PushPermissionRequester.kt b/v4/integration/fcm/src/main/java/exchange/dydx/trading/integration/fcm/PushPermissionRequesterProtocol.kt similarity index 90% rename from v4/integration/fcm/src/main/java/exchange/dydx/trading/integration/fcm/PushPermissionRequester.kt rename to v4/integration/fcm/src/main/java/exchange/dydx/trading/integration/fcm/PushPermissionRequesterProtocol.kt index da57a31a..15a57db0 100644 --- a/v4/integration/fcm/src/main/java/exchange/dydx/trading/integration/fcm/PushPermissionRequester.kt +++ b/v4/integration/fcm/src/main/java/exchange/dydx/trading/integration/fcm/PushPermissionRequesterProtocol.kt @@ -22,19 +22,21 @@ import exchange.dydx.utilities.utils.SharedPreferencesStore import javax.inject.Inject @ActivityRetainedScoped -class RealPushPermissionRequester @Inject constructor( +class PushPermissionRequester @Inject constructor( private val platformDialog: PlatformDialog, private val platformInfo: PlatformInfo, private val abacusLocalizerImp: AbacusLocalizerImp, private val sharedPreferencesStore: SharedPreferencesStore, -) : PushPermissionRequester { +) : PushPermissionRequesterProtocol { var requestPermissionLauncher: ActivityResultLauncher? = null override var activity: Activity? = null set(value) { field = value - (field as ActivityResultCaller).registerForActivityResult( + + requestPermissionLauncher?.unregister() + requestPermissionLauncher = (field as ActivityResultCaller).registerForActivityResult( ActivityResultContracts.RequestPermission(), ) { isGranted: Boolean -> if (isGranted) { @@ -81,14 +83,14 @@ class RealPushPermissionRequester @Inject constructor( } } -interface PushPermissionRequester : ActivityDelegate { +interface PushPermissionRequesterProtocol : ActivityDelegate { fun requestPushPermission() } @InstallIn(ActivityRetainedComponent::class) @Module interface PushPermissionRequesterModule { - @Binds fun bindPushPermissionRequester(real: RealPushPermissionRequester): PushPermissionRequester + @Binds fun bindPushPermissionRequester(real: PushPermissionRequester): PushPermissionRequesterProtocol } private const val PRIMER_SHOWN_KEY = "push_primer_shown"