Updated on 2026-08-14
This commit is contained in:
parent
3ed3dc91b1
commit
6f959bcd3f
21 changed files with 641 additions and 212 deletions
|
|
@ -0,0 +1,22 @@
|
|||
package com.tangem.data.news
|
||||
|
||||
import com.tangem.datasource.api.common.response.ApiResponseError
|
||||
import com.tangem.domain.models.news.NewsError
|
||||
import com.tangem.domain.news.NewsErrorResolver
|
||||
|
||||
internal class DefaultNewsErrorResolver : NewsErrorResolver {
|
||||
|
||||
override fun resolve(throwable: Throwable?): NewsError {
|
||||
return when (throwable) {
|
||||
is ApiResponseError.HttpException -> {
|
||||
NewsError.HttpError(
|
||||
code = throwable.code.numericCode,
|
||||
message = throwable.message.orEmpty(),
|
||||
)
|
||||
}
|
||||
else -> {
|
||||
NewsError.NotHttpError
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,10 +1,12 @@
|
|||
package com.tangem.data.news.di
|
||||
|
||||
import com.tangem.data.news.DefaultNewsErrorResolver
|
||||
import com.tangem.data.news.repository.DefaultNewsRepository
|
||||
import com.tangem.datasource.api.news.NewsApi
|
||||
import com.tangem.datasource.local.news.details.NewsDetailsStore
|
||||
import com.tangem.datasource.local.news.trending.TrendingNewsStore
|
||||
import com.tangem.datasource.local.news.viewed.NewsViewedStore
|
||||
import com.tangem.domain.news.NewsErrorResolver
|
||||
import com.tangem.domain.news.repository.NewsRepository
|
||||
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
|
||||
import dagger.Module
|
||||
|
|
@ -25,6 +27,7 @@ internal object NewsDataModule {
|
|||
newsDetailsStore: NewsDetailsStore,
|
||||
trendingNewsStore: TrendingNewsStore,
|
||||
newsViewedStore: NewsViewedStore,
|
||||
newsErrorResolver: NewsErrorResolver,
|
||||
): NewsRepository {
|
||||
return DefaultNewsRepository(
|
||||
newsApi = newsApi,
|
||||
|
|
@ -32,6 +35,10 @@ internal object NewsDataModule {
|
|||
newsDetailsStore = newsDetailsStore,
|
||||
trendingNewsStore = trendingNewsStore,
|
||||
newsViewedStore = newsViewedStore,
|
||||
newsErrorResolver = newsErrorResolver,
|
||||
)
|
||||
}
|
||||
|
||||
@Provides
|
||||
fun provideNewsErrorResolver(): NewsErrorResolver = DefaultNewsErrorResolver()
|
||||
}
|
||||
|
|
@ -9,6 +9,7 @@ import com.tangem.datasource.local.news.details.NewsDetailsStore
|
|||
import com.tangem.datasource.local.news.trending.TrendingNewsStore
|
||||
import com.tangem.datasource.local.news.viewed.NewsViewedStore
|
||||
import com.tangem.domain.models.news.*
|
||||
import com.tangem.domain.news.NewsErrorResolver
|
||||
import com.tangem.domain.news.model.NewsListBatchFlow
|
||||
import com.tangem.domain.news.model.NewsListBatchingContext
|
||||
import com.tangem.domain.news.model.NewsListConfig
|
||||
|
|
@ -32,6 +33,7 @@ internal class DefaultNewsRepository(
|
|||
private val newsDetailsStore: NewsDetailsStore,
|
||||
private val trendingNewsStore: TrendingNewsStore,
|
||||
private val newsViewedStore: NewsViewedStore,
|
||||
private val newsErrorResolver: NewsErrorResolver,
|
||||
) : NewsRepository {
|
||||
|
||||
override fun getNewsListBatchFlow(context: NewsListBatchingContext, batchSize: Int): NewsListBatchFlow {
|
||||
|
|
@ -176,12 +178,7 @@ internal class DefaultNewsRepository(
|
|||
trendingNewsStore.clear()
|
||||
trendingNewsStore.store(
|
||||
key = TRENDING_NEWS_KEY,
|
||||
value = TrendingNews.Error(
|
||||
NewsError.Unknown(
|
||||
message = apiResponse.cause.message,
|
||||
code = null,
|
||||
),
|
||||
),
|
||||
value = TrendingNews.Error(error = newsErrorResolver.resolve(apiResponse.cause.cause)),
|
||||
)
|
||||
}
|
||||
is ApiResponse.Success<NewsTrendingResponse> -> {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue