Skip to content

Commit

Permalink
feat: offliine-first strategy (#90)
Browse files Browse the repository at this point in the history
  • Loading branch information
kokoichi206 committed Nov 16, 2022
1 parent a60264b commit 3eaaaca
Showing 1 changed file with 18 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
package jp.mydns.kokoichi0206.domain.usecase.get_members

import android.util.Log
import jp.mydns.kokoichi0206.common.Resource
import jp.mydns.kokoichi0206.data.local.model.asExternalModel
import jp.mydns.kokoichi0206.data.remote.dto.toMember
import jp.mydns.kokoichi0206.data.repository.MembersRepository
import jp.mydns.kokoichi0206.data.repository.SakamichiRepository
import jp.mydns.kokoichi0206.model.Member
import kotlinx.coroutines.flow.Flow
Expand All @@ -15,13 +18,28 @@ import javax.inject.Inject
*/
class GetMembersUseCase @Inject constructor(
private val repository: SakamichiRepository,
private val dbRepository: MembersRepository,
) {
// ここで Members -> List<Member> に変えている
operator fun invoke(groupName: String): Flow<Resource<List<Member>>> = flow {
try {
dbRepository.getMembersByGroup(groupName).map {
it.asExternalModel()
}.let { members ->
if (members.isNotEmpty()) {
Log.d("hoge", members.toString())
emit(Resource.Success(members))
return@flow
}
}
emit(Resource.Loading())
val members = repository.getMembers(groupName).members.map { it.toMember() }
emit(Resource.Success(members))
dbRepository.insertMembers(
members.map {
it.copy(group = groupName)
}
)
} catch (e: HttpException) {
emit(Resource.Error(e.localizedMessage ?: "An unexpected error occurred."))
} catch (e: IOException) {
Expand Down

0 comments on commit 3eaaaca

Please sign in to comment.