Updated on 2026-08-14
This commit is contained in:
parent
9ebc1ac551
commit
b42fa5283c
9 changed files with 45 additions and 43 deletions
|
|
@ -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)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue