From 64fbf09026097aa14eb32185faa71e12759d3a17 Mon Sep 17 00:00:00 2001 From: Eric Ampire Date: Mon, 6 Sep 2021 21:52:00 +0200 Subject: [PATCH] Updating Data Source signature --- .../lottiefiles/LocalLottieFileDataSource.kt | 21 +++++++++++++------ .../lottiefiles/LottieFileDataSource.kt | 9 ++++---- .../lottiefiles/RemoteLottieFileDataSource.kt | 21 +++++++++++++------ 3 files changed, 35 insertions(+), 16 deletions(-) diff --git a/data/src/main/java/com/ericampire/android/androidstudycase/data/datasource/lottiefiles/LocalLottieFileDataSource.kt b/data/src/main/java/com/ericampire/android/androidstudycase/data/datasource/lottiefiles/LocalLottieFileDataSource.kt index 02424a1..569082f 100644 --- a/data/src/main/java/com/ericampire/android/androidstudycase/data/datasource/lottiefiles/LocalLottieFileDataSource.kt +++ b/data/src/main/java/com/ericampire/android/androidstudycase/data/datasource/lottiefiles/LocalLottieFileDataSource.kt @@ -2,21 +2,30 @@ package com.ericampire.android.androidstudycase.data.datasource.lottiefiles import com.ericampire.android.androidstudycase.data.room.LottieFilesDao import com.ericampire.android.androidstudycase.domain.entity.Lottiefile +import com.ericampire.android.androidstudycase.util.Result +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.map import javax.inject.Inject class LocalLottieFileDataSource @Inject constructor( private val lottieFileDao: LottieFilesDao ) : LottieFileDataSource { - override suspend fun findRecent(): List { - return lottieFileDao.findRecent() + override suspend fun findRecent(): Flow>> { + return lottieFileDao.findRecent().map { + Result.Success(it) + } } - override suspend fun findPopular(): List { - return lottieFileDao.findPopular() + override suspend fun findPopular(): Flow>> { + return lottieFileDao.findPopular().map { + Result.Success(it) + } } - override suspend fun findFeatured(): List { - return lottieFileDao.findFeatured() + override suspend fun findFeatured(): Flow>> { + return lottieFileDao.findFeatured().map { + Result.Success(it) + } } override suspend fun save(lottiefile: Lottiefile) { diff --git a/data/src/main/java/com/ericampire/android/androidstudycase/data/datasource/lottiefiles/LottieFileDataSource.kt b/data/src/main/java/com/ericampire/android/androidstudycase/data/datasource/lottiefiles/LottieFileDataSource.kt index 05cacdd..86c695e 100644 --- a/data/src/main/java/com/ericampire/android/androidstudycase/data/datasource/lottiefiles/LottieFileDataSource.kt +++ b/data/src/main/java/com/ericampire/android/androidstudycase/data/datasource/lottiefiles/LottieFileDataSource.kt @@ -1,11 +1,12 @@ package com.ericampire.android.androidstudycase.data.datasource.lottiefiles -import com.ericampire.android.androidstudycase.domain.entity.Blog import com.ericampire.android.androidstudycase.domain.entity.Lottiefile +import com.ericampire.android.androidstudycase.util.Result +import kotlinx.coroutines.flow.Flow interface LottieFileDataSource { - suspend fun findRecent(): List - suspend fun findPopular(): List - suspend fun findFeatured(): List + suspend fun findRecent(): Flow>> + suspend fun findPopular(): Flow>> + suspend fun findFeatured(): Flow>> suspend fun save(lottiefile: Lottiefile) } \ No newline at end of file diff --git a/data/src/main/java/com/ericampire/android/androidstudycase/data/datasource/lottiefiles/RemoteLottieFileDataSource.kt b/data/src/main/java/com/ericampire/android/androidstudycase/data/datasource/lottiefiles/RemoteLottieFileDataSource.kt index f85f009..a31f20c 100644 --- a/data/src/main/java/com/ericampire/android/androidstudycase/data/datasource/lottiefiles/RemoteLottieFileDataSource.kt +++ b/data/src/main/java/com/ericampire/android/androidstudycase/data/datasource/lottiefiles/RemoteLottieFileDataSource.kt @@ -3,28 +3,37 @@ package com.ericampire.android.androidstudycase.data.datasource.lottiefiles import com.ericampire.android.androidstudycase.domain.entity.LottieFilesApiResponse import com.ericampire.android.androidstudycase.domain.entity.Lottiefile import com.ericampire.android.androidstudycase.util.ApiUrl +import com.ericampire.android.androidstudycase.util.Result import io.ktor.client.* import io.ktor.client.request.* +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.flow import javax.inject.Inject class RemoteLottieFileDataSource @Inject constructor( private val httpClient: HttpClient ) : LottieFileDataSource { - private suspend fun find(url: String): List { - val data = httpClient.get(url) - return data.lottieFilesLottieFilesData.page.results + private suspend fun find(url: String): Flow>> { + return flow { + try { + val data = httpClient.get(url) + emit(Result.Success(data.lottieFilesLottieFilesData.page.results)) + } catch (e: Exception) { + emit(Result.Error(e)) + } + } } - override suspend fun findRecent(): List { + override suspend fun findRecent(): Flow>> { return find(ApiUrl.LottieFile.recent) } - override suspend fun findPopular(): List { + override suspend fun findPopular(): Flow>> { return find(ApiUrl.LottieFile.popular) } - override suspend fun findFeatured(): List { + override suspend fun findFeatured(): Flow>> { return find(ApiUrl.LottieFile.featured) }