[FIX] Meilleur repository pour Scientifique

RepositoryAndroid
Renaud BEURET 3 months ago
parent 981afd5a3a
commit 7362763f9b

@ -21,11 +21,6 @@ class QuestionAPIRepository : IQuestionRepository {
get() = _questions.asStateFlow()
override suspend fun fetchQuestions(index: Int) {
//1. appel à l'api QuestionRequestService
//2. fill _questions with QuestionRequestService response
// _questions.update {
//
// }
val serviceClient = createRequestService().create<QuestionRequestService>()
try {
_questions.value = serviceClient.getQuestions(index).questions.ToModel()

@ -1,9 +1,14 @@
package fr.iut.sciencequest.model.repositories.scientifique
import fr.iut.sciencequest.model.metier.Scientifique
import fr.iut.sciencequest.model.metier.question.QuestionWithSimpleReponse
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.StateFlow
interface IScientifiqueRepository {
suspend fun fetchScientifiques(index: Int): Flow<List<Scientifique>>
suspend fun fetchScientifiqueById(id: Int): Flow<Scientifique>
val scientifique: StateFlow<Scientifique>
val scientifiques: StateFlow<List<Scientifique>>
suspend fun fetchScientifiques(index: Int)
suspend fun fetchScientifiqueById(id: Int)
}

@ -1,32 +1,44 @@
package fr.iut.sciencequest.model.repositories.scientifique
import android.util.Log
import fr.iut.sciencequest.model.buisness.Question.QuestionRequestService
import fr.iut.sciencequest.model.buisness.Scientifique.ScientifiqueRequestService
import fr.iut.sciencequest.model.buisness.createRequestService
import fr.iut.sciencequest.model.dto.extensions.ToModel
import fr.iut.sciencequest.model.metier.Scientifique
import fr.iut.sciencequest.stub.StubScientifique1
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.flow.flow
import retrofit2.create
class ScientifiqueAPIRepository: IScientifiqueRepository {
suspend override fun fetchScientifiqueById(id: Int): Flow<Scientifique> = flow {
private val _scientifique = MutableStateFlow<Scientifique>(StubScientifique1.ToModel())
override val scientifique: StateFlow<Scientifique>
get() = _scientifique.asStateFlow()
private val _scientifiques = MutableStateFlow<List<Scientifique>>(emptyList())
override val scientifiques: StateFlow<List<Scientifique>>
get() = _scientifiques.asStateFlow()
override suspend fun fetchScientifiqueById(id: Int) {
val serviceClient = createRequestService().create<ScientifiqueRequestService>()
try {
val response = serviceClient.getScientifique(id)
emit(response.ToModel())
_scientifique.value = serviceClient.getScientifique(id).ToModel()
} catch (e: Exception) {
Log.e("Requete API",e.message.toString())
Log.e("Requete API Scientifiqu", e.message.toString())
}
}
suspend override fun fetchScientifiques(index: Int): Flow<List<Scientifique>> = flow {
override suspend fun fetchScientifiques(index: Int) {
val serviceClient = createRequestService().create<ScientifiqueRequestService>()
try {
val response = serviceClient.getScientifiques(index)
emit(response.scientifiques.ToModel())
_scientifiques.value = serviceClient.getScientifiques(index).scientifiques.ToModel()
} catch (e: Exception) {
Log.e("Requete API",e.message.toString())
Log.e("Requete API Scientifiqu", e.message.toString())
}
}
}

@ -18,8 +18,9 @@ class PenduViewModel(
fun InitPartie() {
Log.d("PenduViewModel","Un utilisateur initialise une partie")
viewModelScope.launch {
scientifiqueRepo.fetchScientifiqueById(1).collect {
val nomComplet = it.prenom + " " + it.nom
scientifiqueRepo.fetchScientifiqueById(1)
val scientifique = scientifiqueRepo.scientifique.value
val nomComplet = scientifique.prenom + " " + scientifique.nom
Log.d("ViewModelPendu",nomComplet)
var motATrou = ""
for (chr in nomComplet) {
@ -36,7 +37,6 @@ class PenduViewModel(
)
}
}
}
// mot : mot à trouver
// motAct : état actuel du mot trouvé par l'utilisateur

@ -20,9 +20,8 @@ class ScientifiquesDecouvertsVM(
fun getScientifiques(page: Int) {
Log.d("ViewModelScientifique","Recup la liste de scientifiques")
viewModelScope.launch {
repository.fetchScientifiques(page).collect {
_listeScientifique.value = ScientifiqueDecouvertsUIState(it.toMutableList())
}
repository.fetchScientifiques(page)
_listeScientifique.value = ScientifiqueDecouvertsUIState(repository.scientifiques.value.toMutableList())
}
}
companion object {

Loading…
Cancel
Save