diff --git a/app/src/main/java/com/tangem/tap/di/RootAppComponentContextModule.kt b/app/src/main/java/com/tangem/tap/di/RootAppComponentContextModule.kt index 1128b32708..b59094d579 100644 --- a/app/src/main/java/com/tangem/tap/di/RootAppComponentContextModule.kt +++ b/app/src/main/java/com/tangem/tap/di/RootAppComponentContextModule.kt @@ -6,8 +6,9 @@ import com.arkivanov.decompose.defaultComponentContext import com.tangem.core.decompose.context.AppComponentContext import com.tangem.core.decompose.context.DefaultAppComponentContext import com.tangem.core.decompose.di.DecomposeComponent +import com.tangem.core.decompose.di.GlobalUiMessageSender import com.tangem.core.decompose.di.RootAppComponentContext -import com.tangem.core.ui.UiDependencies +import com.tangem.core.decompose.ui.UiMessageSender import com.tangem.utils.coroutines.CoroutineDispatcherProvider import dagger.Module import dagger.Provides @@ -27,13 +28,13 @@ internal object RootAppComponentContextModule { @ActivityContext context: Context, dispatchers: CoroutineDispatcherProvider, componentBuilder: DecomposeComponent.Builder, - uiDependencies: UiDependencies, + @GlobalUiMessageSender messageSender: UiMessageSender, ): AppComponentContext { return DefaultAppComponentContext( componentContext = (context as AppCompatActivity).defaultComponentContext(), - messageHandler = uiDependencies.eventMessageHandler, dispatchers = dispatchers, hiltComponentBuilder = componentBuilder, + messageSender = messageSender, ) } } \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/di/UiDependenciesModule.kt b/app/src/main/java/com/tangem/tap/di/UiDependenciesModule.kt index 44631d4c05..de5f7ef9e3 100644 --- a/app/src/main/java/com/tangem/tap/di/UiDependenciesModule.kt +++ b/app/src/main/java/com/tangem/tap/di/UiDependenciesModule.kt @@ -1,6 +1,9 @@ package com.tangem.tap.di import androidx.compose.material3.SnackbarHostState +import com.tangem.core.decompose.di.GlobalUiMessageSender +import com.tangem.core.decompose.ui.DefaultUiMessageSender +import com.tangem.core.decompose.ui.UiMessageSender import com.tangem.core.ui.UiDependencies import com.tangem.core.ui.haptic.VibratorHapticManager import com.tangem.core.ui.message.EventMessageHandler @@ -28,4 +31,11 @@ internal object UiDependenciesModule { override val eventMessageHandler: EventMessageHandler = EventMessageHandler() } } + + @Provides + @Singleton + @GlobalUiMessageSender + fun provideUiMessageSender(uiDependencies: UiDependencies): UiMessageSender { + return DefaultUiMessageSender(uiDependencies.eventMessageHandler) + } } \ No newline at end of file diff --git a/core/decompose/src/main/kotlin/com/tangem/core/decompose/context/DefaultAppComponentContext.kt b/core/decompose/src/main/kotlin/com/tangem/core/decompose/context/DefaultAppComponentContext.kt index 6ffebce9fe..d4453d3e6a 100644 --- a/core/decompose/src/main/kotlin/com/tangem/core/decompose/context/DefaultAppComponentContext.kt +++ b/core/decompose/src/main/kotlin/com/tangem/core/decompose/context/DefaultAppComponentContext.kt @@ -7,8 +7,6 @@ import com.tangem.core.decompose.navigation.AppNavigationProvider import com.tangem.core.decompose.navigation.DefaultAppNavigationProvider import com.tangem.core.decompose.navigation.DefaultRouter import com.tangem.core.decompose.navigation.Router -import com.tangem.core.decompose.ui.DefaultUiMessageSender -import com.tangem.core.decompose.ui.UiMessageHandler import com.tangem.core.decompose.ui.UiMessageSender import com.tangem.core.decompose.utils.ComponentCoroutineScope import com.tangem.utils.coroutines.CoroutineDispatcherProvider @@ -16,9 +14,9 @@ import kotlinx.coroutines.CoroutineScope class DefaultAppComponentContext( componentContext: ComponentContext, - messageHandler: UiMessageHandler, override val dispatchers: CoroutineDispatcherProvider, override val hiltComponentBuilder: DecomposeComponent.Builder, + override val messageSender: UiMessageSender, private val replaceRouter: Router? = null, ) : AppComponentContext, ComponentContext by componentContext { @@ -26,8 +24,6 @@ class DefaultAppComponentContext( override val componentScope: CoroutineScope = ComponentCoroutineScope(lifecycle, dispatchers) - override val messageSender: UiMessageSender = DefaultUiMessageSender(messageHandler) - override val navigationProvider: AppNavigationProvider get() = instanceKeeper.getOrCreate { DefaultAppNavigationProvider() } diff --git a/core/decompose/src/main/kotlin/com/tangem/core/decompose/di/RootAppComponentContext.kt b/core/decompose/src/main/kotlin/com/tangem/core/decompose/di/RootAppComponentContext.kt index b9e3987632..f6bbc51b20 100644 --- a/core/decompose/src/main/kotlin/com/tangem/core/decompose/di/RootAppComponentContext.kt +++ b/core/decompose/src/main/kotlin/com/tangem/core/decompose/di/RootAppComponentContext.kt @@ -3,4 +3,7 @@ package com.tangem.core.decompose.di import javax.inject.Qualifier @Qualifier -annotation class RootAppComponentContext \ No newline at end of file +annotation class RootAppComponentContext + +@Qualifier +annotation class GlobalUiMessageSender \ No newline at end of file diff --git a/core/decompose/src/main/kotlin/com/tangem/core/decompose/ui/DefaultUiMessageSender.kt b/core/decompose/src/main/kotlin/com/tangem/core/decompose/ui/DefaultUiMessageSender.kt index 59546d42e0..52da85b3c7 100644 --- a/core/decompose/src/main/kotlin/com/tangem/core/decompose/ui/DefaultUiMessageSender.kt +++ b/core/decompose/src/main/kotlin/com/tangem/core/decompose/ui/DefaultUiMessageSender.kt @@ -1,6 +1,6 @@ package com.tangem.core.decompose.ui -internal class DefaultUiMessageSender( +class DefaultUiMessageSender( private val handler: UiMessageHandler, ) : UiMessageSender { diff --git a/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/TokenDetailsFragment.kt b/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/TokenDetailsFragment.kt index 3bd1955d4e..2c787270d1 100644 --- a/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/TokenDetailsFragment.kt +++ b/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/TokenDetailsFragment.kt @@ -3,15 +3,17 @@ package com.tangem.feature.tokendetails.presentation import android.os.Bundle import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier +import androidx.fragment.app.viewModels import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.arkivanov.decompose.defaultComponentContext -import androidx.fragment.app.viewModels import com.tangem.common.routing.AppRoute import com.tangem.common.routing.AppRouter import com.tangem.common.routing.bundle.unbundle import com.tangem.common.routing.utils.asRouter import com.tangem.core.decompose.context.DefaultAppComponentContext import com.tangem.core.decompose.di.DecomposeComponent +import com.tangem.core.decompose.di.GlobalUiMessageSender +import com.tangem.core.decompose.ui.UiMessageSender import com.tangem.core.ui.UiDependencies import com.tangem.core.ui.components.NavigationBar3ButtonsScrim import com.tangem.core.ui.screen.ComposeFragment @@ -32,7 +34,11 @@ internal class TokenDetailsFragment : ComposeFragment() { override lateinit var uiDependencies: UiDependencies @Inject - lateinit var tokenDetailsRouter: TokenDetailsRouter + @GlobalUiMessageSender + internal lateinit var messageSender: UiMessageSender + + @Inject + internal lateinit var tokenDetailsRouter: TokenDetailsRouter @Inject internal lateinit var coroutineDispatcherProvider: CoroutineDispatcherProvider @@ -70,7 +76,7 @@ internal class TokenDetailsFragment : ComposeFragment() { val appContext = DefaultAppComponentContext( componentContext = defaultComponentContext(requireActivity().onBackPressedDispatcher), - messageHandler = uiDependencies.eventMessageHandler, + messageSender = messageSender, dispatchers = coroutineDispatcherProvider, hiltComponentBuilder = componentBuilder, replaceRouter = appRouter.asRouter(), diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/WalletFragment.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/WalletFragment.kt index ba3c83a69c..11842f32eb 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/WalletFragment.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/WalletFragment.kt @@ -9,6 +9,8 @@ import com.tangem.common.routing.AppRouter import com.tangem.common.routing.utils.asRouter import com.tangem.core.decompose.context.DefaultAppComponentContext import com.tangem.core.decompose.di.DecomposeComponent +import com.tangem.core.decompose.di.GlobalUiMessageSender +import com.tangem.core.decompose.ui.UiMessageSender import com.tangem.core.ui.UiDependencies import com.tangem.core.ui.screen.ComposeFragment import com.tangem.feature.wallet.presentation.router.InnerWalletRouter @@ -45,6 +47,10 @@ internal class WalletFragment : ComposeFragment() { @Inject internal lateinit var appRouter: AppRouter + @Inject + @GlobalUiMessageSender + internal lateinit var messageSender: UiMessageSender + private lateinit var marketsEntryComponent: MarketsEntryComponent private val _walletRouter: InnerWalletRouter @@ -57,7 +63,7 @@ internal class WalletFragment : ComposeFragment() { val appContext = DefaultAppComponentContext( componentContext = defaultComponentContext(requireActivity().onBackPressedDispatcher), - messageHandler = uiDependencies.eventMessageHandler, + messageSender = messageSender, dispatchers = coroutineDispatcherProvider, hiltComponentBuilder = componentBuilder, replaceRouter = appRouter.asRouter(),