Updating Data Source signature
This commit is contained in:
+15
-6
@@ -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<Lottiefile> {
|
||||
return lottieFileDao.findRecent()
|
||||
override suspend fun findRecent(): Flow<Result<List<Lottiefile>>> {
|
||||
return lottieFileDao.findRecent().map {
|
||||
Result.Success(it)
|
||||
}
|
||||
}
|
||||
|
||||
override suspend fun findPopular(): List<Lottiefile> {
|
||||
return lottieFileDao.findPopular()
|
||||
override suspend fun findPopular(): Flow<Result<List<Lottiefile>>> {
|
||||
return lottieFileDao.findPopular().map {
|
||||
Result.Success(it)
|
||||
}
|
||||
}
|
||||
|
||||
override suspend fun findFeatured(): List<Lottiefile> {
|
||||
return lottieFileDao.findFeatured()
|
||||
override suspend fun findFeatured(): Flow<Result<List<Lottiefile>>> {
|
||||
return lottieFileDao.findFeatured().map {
|
||||
Result.Success(it)
|
||||
}
|
||||
}
|
||||
|
||||
override suspend fun save(lottiefile: Lottiefile) {
|
||||
|
||||
+5
-4
@@ -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<Lottiefile>
|
||||
suspend fun findPopular(): List<Lottiefile>
|
||||
suspend fun findFeatured(): List<Lottiefile>
|
||||
suspend fun findRecent(): Flow<Result<List<Lottiefile>>>
|
||||
suspend fun findPopular(): Flow<Result<List<Lottiefile>>>
|
||||
suspend fun findFeatured(): Flow<Result<List<Lottiefile>>>
|
||||
suspend fun save(lottiefile: Lottiefile)
|
||||
}
|
||||
+15
-6
@@ -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<Lottiefile> {
|
||||
val data = httpClient.get<LottieFilesApiResponse>(url)
|
||||
return data.lottieFilesLottieFilesData.page.results
|
||||
private suspend fun find(url: String): Flow<Result<List<Lottiefile>>> {
|
||||
return flow {
|
||||
try {
|
||||
val data = httpClient.get<LottieFilesApiResponse>(url)
|
||||
emit(Result.Success(data.lottieFilesLottieFilesData.page.results))
|
||||
} catch (e: Exception) {
|
||||
emit(Result.Error(e))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override suspend fun findRecent(): List<Lottiefile> {
|
||||
override suspend fun findRecent(): Flow<Result<List<Lottiefile>>> {
|
||||
return find(ApiUrl.LottieFile.recent)
|
||||
}
|
||||
|
||||
override suspend fun findPopular(): List<Lottiefile> {
|
||||
override suspend fun findPopular(): Flow<Result<List<Lottiefile>>> {
|
||||
return find(ApiUrl.LottieFile.popular)
|
||||
}
|
||||
|
||||
override suspend fun findFeatured(): List<Lottiefile> {
|
||||
override suspend fun findFeatured(): Flow<Result<List<Lottiefile>>> {
|
||||
return find(ApiUrl.LottieFile.featured)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user