Skip to content

Instantly share code, notes, and snippets.

@krzdabrowski
Created August 6, 2022 12:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save krzdabrowski/21389d3c12ecd9f54b481825d9b311b7 to your computer and use it in GitHub Desktop.
Save krzdabrowski/21389d3c12ecd9f54b481825d9b311b7 to your computer and use it in GitHub Desktop.
class RocketRepositoryImpl @Inject constructor(
private val rocketApi: RocketApi,
private val rocketDao: RocketDao
) : RocketRepository {
override fun getRockets(): Flow<List<Rocket>> {
return rocketDao
.getRockets()
.map { rocketsCached ->
rocketsCached.map { it.toDomainModel() }
}
.onEach { rockets ->
if (rockets.isEmpty()) {
refreshRockets()
}
}
}
override suspend fun refreshRockets() {
rocketApi
.getRockets()
.map {
it.toDomainModel().toEntityModel()
}
.also {
rocketDao.saveRockets(it)
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment