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.data.room.LottieFilesDao
|
||||||
import com.ericampire.android.androidstudycase.domain.entity.Lottiefile
|
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
|
import javax.inject.Inject
|
||||||
|
|
||||||
class LocalLottieFileDataSource @Inject constructor(
|
class LocalLottieFileDataSource @Inject constructor(
|
||||||
private val lottieFileDao: LottieFilesDao
|
private val lottieFileDao: LottieFilesDao
|
||||||
) : LottieFileDataSource {
|
) : LottieFileDataSource {
|
||||||
override suspend fun findRecent(): List<Lottiefile> {
|
override suspend fun findRecent(): Flow<Result<List<Lottiefile>>> {
|
||||||
return lottieFileDao.findRecent()
|
return lottieFileDao.findRecent().map {
|
||||||
|
Result.Success(it)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun findPopular(): List<Lottiefile> {
|
override suspend fun findPopular(): Flow<Result<List<Lottiefile>>> {
|
||||||
return lottieFileDao.findPopular()
|
return lottieFileDao.findPopular().map {
|
||||||
|
Result.Success(it)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun findFeatured(): List<Lottiefile> {
|
override suspend fun findFeatured(): Flow<Result<List<Lottiefile>>> {
|
||||||
return lottieFileDao.findFeatured()
|
return lottieFileDao.findFeatured().map {
|
||||||
|
Result.Success(it)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun save(lottiefile: Lottiefile) {
|
override suspend fun save(lottiefile: Lottiefile) {
|
||||||
|
|||||||
+5
-4
@@ -1,11 +1,12 @@
|
|||||||
package com.ericampire.android.androidstudycase.data.datasource.lottiefiles
|
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.domain.entity.Lottiefile
|
||||||
|
import com.ericampire.android.androidstudycase.util.Result
|
||||||
|
import kotlinx.coroutines.flow.Flow
|
||||||
|
|
||||||
interface LottieFileDataSource {
|
interface LottieFileDataSource {
|
||||||
suspend fun findRecent(): List<Lottiefile>
|
suspend fun findRecent(): Flow<Result<List<Lottiefile>>>
|
||||||
suspend fun findPopular(): List<Lottiefile>
|
suspend fun findPopular(): Flow<Result<List<Lottiefile>>>
|
||||||
suspend fun findFeatured(): List<Lottiefile>
|
suspend fun findFeatured(): Flow<Result<List<Lottiefile>>>
|
||||||
suspend fun save(lottiefile: Lottiefile)
|
suspend fun save(lottiefile: Lottiefile)
|
||||||
}
|
}
|
||||||
+14
-5
@@ -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.LottieFilesApiResponse
|
||||||
import com.ericampire.android.androidstudycase.domain.entity.Lottiefile
|
import com.ericampire.android.androidstudycase.domain.entity.Lottiefile
|
||||||
import com.ericampire.android.androidstudycase.util.ApiUrl
|
import com.ericampire.android.androidstudycase.util.ApiUrl
|
||||||
|
import com.ericampire.android.androidstudycase.util.Result
|
||||||
import io.ktor.client.*
|
import io.ktor.client.*
|
||||||
import io.ktor.client.request.*
|
import io.ktor.client.request.*
|
||||||
|
import kotlinx.coroutines.flow.Flow
|
||||||
|
import kotlinx.coroutines.flow.flow
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
class RemoteLottieFileDataSource @Inject constructor(
|
class RemoteLottieFileDataSource @Inject constructor(
|
||||||
private val httpClient: HttpClient
|
private val httpClient: HttpClient
|
||||||
) : LottieFileDataSource {
|
) : LottieFileDataSource {
|
||||||
|
|
||||||
private suspend fun find(url: String): List<Lottiefile> {
|
private suspend fun find(url: String): Flow<Result<List<Lottiefile>>> {
|
||||||
|
return flow {
|
||||||
|
try {
|
||||||
val data = httpClient.get<LottieFilesApiResponse>(url)
|
val data = httpClient.get<LottieFilesApiResponse>(url)
|
||||||
return data.lottieFilesLottieFilesData.page.results
|
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)
|
return find(ApiUrl.LottieFile.recent)
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun findPopular(): List<Lottiefile> {
|
override suspend fun findPopular(): Flow<Result<List<Lottiefile>>> {
|
||||||
return find(ApiUrl.LottieFile.popular)
|
return find(ApiUrl.LottieFile.popular)
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun findFeatured(): List<Lottiefile> {
|
override suspend fun findFeatured(): Flow<Result<List<Lottiefile>>> {
|
||||||
return find(ApiUrl.LottieFile.featured)
|
return find(ApiUrl.LottieFile.featured)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user