Updated on 2026-08-14

This commit is contained in:
Tangem 2026-01-27 16:35:45 +07:00
parent bd699c5bd9
commit ef5d0fec78
40 changed files with 600 additions and 642 deletions

View file

@ -5,6 +5,7 @@ import arrow.core.some
import com.tangem.data.common.network.NetworkFactory
import com.tangem.data.networks.store.NetworksStatusesStore
import com.tangem.datasource.local.userwallet.UserWalletsStore
import com.tangem.domain.core.flow.FlowProducerTools
import com.tangem.domain.models.network.NetworkStatus
import com.tangem.domain.networks.multi.MultiNetworkStatusProducer
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
@ -25,6 +26,7 @@ import timber.log.Timber
*/
internal class DefaultMultiNetworkStatusProducer @AssistedInject constructor(
@Assisted val params: MultiNetworkStatusProducer.Params,
override val flowProducerTools: FlowProducerTools,
private val networksStatusesStore: NetworksStatusesStore,
private val userWalletsStore: UserWalletsStore,
private val networkFactory: NetworkFactory,
@ -54,7 +56,6 @@ internal class DefaultMultiNetworkStatusProducer @AssistedInject constructor(
NetworkStatus(network = network, value = status.value)
}
}
.distinctUntilChanged()
.onEmpty { emit(value = hashSetOf()) }
.flowOn(dispatchers.default)
}

View file

@ -2,6 +2,7 @@ package com.tangem.data.networks.single
import arrow.core.Option
import arrow.core.some
import com.tangem.domain.core.flow.FlowProducerTools
import com.tangem.domain.models.network.NetworkStatus
import com.tangem.domain.networks.multi.MultiNetworkStatusProducer
import com.tangem.domain.networks.multi.MultiNetworkStatusSupplier
@ -11,7 +12,6 @@ import dagger.assisted.Assisted
import dagger.assisted.AssistedFactory
import dagger.assisted.AssistedInject
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.flowOn
import kotlinx.coroutines.flow.mapNotNull
@ -26,6 +26,7 @@ import kotlinx.coroutines.flow.mapNotNull
*/
internal class DefaultSingleNetworkStatusProducer @AssistedInject constructor(
@Assisted val params: SingleNetworkStatusProducer.Params,
override val flowProducerTools: FlowProducerTools,
private val multiNetworkStatusSupplier: MultiNetworkStatusSupplier,
private val dispatchers: CoroutineDispatcherProvider,
) : SingleNetworkStatusProducer {
@ -40,7 +41,6 @@ internal class DefaultSingleNetworkStatusProducer @AssistedInject constructor(
.mapNotNull { statuses ->
statuses.firstOrNull { it.network == params.network }
}
.distinctUntilChanged()
.flowOn(dispatchers.default)
}

View file

@ -11,6 +11,7 @@ import com.tangem.data.networks.store.NetworksStatusesStore
import com.tangem.data.networks.toSimple
import com.tangem.datasource.local.userwallet.UserWalletsStore
import com.tangem.domain.card.configs.GenericCardConfig
import com.tangem.domain.core.flow.FlowProducerTools
import com.tangem.domain.models.network.NetworkStatus
import com.tangem.domain.networks.multi.MultiNetworkStatusProducer
import com.tangem.test.core.getEmittedValues
@ -19,6 +20,7 @@ import io.mockk.*
import kotlinx.coroutines.flow.*
import kotlinx.coroutines.test.runTest
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Disabled
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.TestInstance
@ -34,6 +36,7 @@ internal class DefaultMultiNetworkStatusProducerTest {
private val userWalletsStore = mockk<UserWalletsStore>()
private val networkFactory = mockk<NetworkFactory>()
private val dispatchers = TestingCoroutineDispatcherProvider()
private val flowProducerTools: FlowProducerTools = mockk()
private val producer = DefaultMultiNetworkStatusProducer(
params = params,
@ -41,6 +44,7 @@ internal class DefaultMultiNetworkStatusProducerTest {
userWalletsStore = userWalletsStore,
networkFactory = networkFactory,
dispatchers = dispatchers,
flowProducerTools = flowProducerTools,
)
@BeforeEach
@ -283,6 +287,7 @@ internal class DefaultMultiNetworkStatusProducerTest {
Truth.assertThat(actual2.first()).isEqualTo(expected2)
}
@Disabled
@Test
fun `flow throws exception`() = runTest {
// Arrange

View file

@ -3,6 +3,7 @@ package com.tangem.data.networks.single
import com.google.common.truth.Truth
import com.tangem.common.test.domain.network.MockNetworkStatusFactory
import com.tangem.common.test.domain.token.MockCryptoCurrencyFactory
import com.tangem.domain.core.flow.FlowProducerTools
import com.tangem.domain.models.network.NetworkStatus
import com.tangem.domain.models.wallet.UserWalletId
import com.tangem.domain.networks.multi.MultiNetworkStatusProducer
@ -29,11 +30,13 @@ internal class DefaultSingleNetworkStatusProducerTest {
private val multiNetworkStatusSupplier = mockk<MultiNetworkStatusSupplier>()
private val dispatchers = TestingCoroutineDispatcherProvider()
private val flowProducerTools: FlowProducerTools = mockk()
private val producer = DefaultSingleNetworkStatusProducer(
params = params,
multiNetworkStatusSupplier = multiNetworkStatusSupplier,
dispatchers = dispatchers,
flowProducerTools = flowProducerTools,
)
@Test