Updated on 2026-08-14

This commit is contained in:
Tangem 2025-09-15 17:21:47 +04:00
parent 9ebc1ac551
commit b42fa5283c
9 changed files with 45 additions and 43 deletions

View file

@ -1,5 +1,7 @@
package com.tangem.data.quotes.single
import arrow.core.Option
import arrow.core.some
import com.tangem.data.quotes.store.QuotesStatusesStore
import com.tangem.domain.models.quote.QuoteStatus
import com.tangem.domain.quotes.single.SingleQuoteStatusProducer
@ -7,7 +9,10 @@ import com.tangem.utils.coroutines.CoroutineDispatcherProvider
import dagger.assisted.Assisted
import dagger.assisted.AssistedFactory
import dagger.assisted.AssistedInject
import kotlinx.coroutines.flow.*
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.flowOn
import kotlinx.coroutines.flow.mapNotNull
/**
* Default implementation of [SingleQuoteStatusProducer]
@ -21,11 +26,12 @@ internal class DefaultSingleQuoteStatusProducer @AssistedInject constructor(
private val dispatchers: CoroutineDispatcherProvider,
) : SingleQuoteStatusProducer {
override val fallback: QuoteStatus = QuoteStatus(rawCurrencyId = params.rawCurrencyId)
private val default = QuoteStatus(rawCurrencyId = params.rawCurrencyId)
override val fallback: Option<QuoteStatus> = default.some()
override fun produce(): Flow<QuoteStatus> {
return quotesStatusesStore.get()
.mapNotNull { quotes -> quotes.firstOrNull { it.rawCurrencyId == params.rawCurrencyId } ?: fallback }
.mapNotNull { quotes -> quotes.firstOrNull { it.rawCurrencyId == params.rawCurrencyId } ?: default }
.distinctUntilChanged()
.flowOn(dispatchers.default)
}