|
@@ -4,7 +4,9 @@ import androidx.lifecycle.LiveData
|
|
|
import androidx.lifecycle.Transformations
|
|
import androidx.lifecycle.Transformations
|
|
|
import com.mrozon.core_api.db.HealthDiaryDao
|
|
import com.mrozon.core_api.db.HealthDiaryDao
|
|
|
import com.mrozon.core_api.entity.User
|
|
import com.mrozon.core_api.entity.User
|
|
|
|
|
+import com.mrozon.core_api.mapper.MeasureTypeToMeasureTypeDbMapper
|
|
|
import com.mrozon.core_api.mapper.UserToUserDbMapper
|
|
import com.mrozon.core_api.mapper.UserToUserDbMapper
|
|
|
|
|
+import com.mrozon.core_api.network.model.toMeasureType
|
|
|
import com.mrozon.core_api.network.model.toPerson
|
|
import com.mrozon.core_api.network.model.toPerson
|
|
|
import com.mrozon.utils.network.Result
|
|
import com.mrozon.utils.network.Result
|
|
|
import kotlinx.coroutines.flow.Flow
|
|
import kotlinx.coroutines.flow.Flow
|
|
@@ -16,12 +18,23 @@ import javax.inject.Singleton
|
|
|
@Singleton
|
|
@Singleton
|
|
|
class PreloadDataRepositoryImp @Inject constructor(
|
|
class PreloadDataRepositoryImp @Inject constructor(
|
|
|
private val dao: HealthDiaryDao,
|
|
private val dao: HealthDiaryDao,
|
|
|
- private val mapper: UserToUserDbMapper
|
|
|
|
|
|
|
+ private val remoteDataSource: PreloadDataRemoteDataSource,
|
|
|
|
|
+ private val mapper: UserToUserDbMapper,
|
|
|
|
|
+ private val mapperMT: MeasureTypeToMeasureTypeDbMapper
|
|
|
): PreloadDataRepository {
|
|
): PreloadDataRepository {
|
|
|
|
|
|
|
|
- override fun getLocalUser(): Flow<Result<User?>> {
|
|
|
|
|
|
|
+ override fun getPreloadData(): Flow<Result<User?>> {
|
|
|
return flow {
|
|
return flow {
|
|
|
emit(Result.loading())
|
|
emit(Result.loading())
|
|
|
|
|
+ val networkResult = remoteDataSource.getMeasureTypes()
|
|
|
|
|
+ if (networkResult.status == Result.Status.SUCCESS) {
|
|
|
|
|
+ val data = networkResult.data!!
|
|
|
|
|
+ val measureTypes = data.map { measureType ->
|
|
|
|
|
+ measureType.toMeasureType()
|
|
|
|
|
+ }
|
|
|
|
|
+ val measureTypesDb = mapperMT.map(measureTypes)
|
|
|
|
|
+ dao.reloadMeasureType(measureTypesDb)
|
|
|
|
|
+ }
|
|
|
val query = dao.getUser()
|
|
val query = dao.getUser()
|
|
|
val userDb = query.firstOrNull()
|
|
val userDb = query.firstOrNull()
|
|
|
if(userDb==null){
|
|
if(userDb==null){
|
|
@@ -29,7 +42,6 @@ class PreloadDataRepositoryImp @Inject constructor(
|
|
|
}
|
|
}
|
|
|
else
|
|
else
|
|
|
{
|
|
{
|
|
|
- //TODO load additional entities from network - measure types
|
|
|
|
|
emit(Result.success(mapper.reverseMap(userDb)))
|
|
emit(Result.success(mapper.reverseMap(userDb)))
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|