[FIX] Factory et utilisent un repo injecté

RepositoryAndroid
Renaud BEURET 1 year ago
parent 47a3fdecbd
commit 318c14bec3

@ -4,33 +4,40 @@ import android.os.Handler
import android.os.Looper import android.os.Looper
import android.util.Log import android.util.Log
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import fr.iut.sciencequest.ViewModels.UiStates.KahootUIState import fr.iut.sciencequest.ViewModels.UiStates.KahootUIState
import fr.iut.sciencequest.model.buisness.Question.fetchQuestions import fr.iut.sciencequest.model.repositories.question.IQuestionRepository
import fr.iut.sciencequest.stub.StubQuestionWithReponses2 import fr.iut.sciencequest.model.repositories.question.QuestionAPIRepository
import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
class KahootViewModel: ViewModel() { class KahootViewModel(
val questionRepo: IQuestionRepository
): ViewModel() {
var uiState = MutableStateFlow(KahootUIState()) var uiState = MutableStateFlow(KahootUIState())
private val handler = Handler(Looper.getMainLooper()) private val handler = Handler(Looper.getMainLooper())
fun lancerPartie() { fun lancerPartie() {
viewModelScope.launch { viewModelScope.launch {
fetchQuestions(2).collect() { questionRepo.fetchQuestions(2)
for (question in it.questions) { Log.d("KahootViewModel","J'ai trouvé ${questionRepo.questions.value.size} questions")
handler.postDelayed( var count = 1
{ for (question in questionRepo.questions.value) {
Log.d("KahootViewModel","J'actualise les questions") handler.postDelayed(
uiState.value = KahootUIState(question, {
duréePartie = uiState.value.duréePartie, Log.d("KahootViewModel", "J'actualise les questions")
nbPoints = uiState.value.nbPoints, uiState.value = KahootUIState(
reponseChoisie = false) question,
}, duréePartie = uiState.value.duréePartie,
uiState.value.duréePartie nbPoints = uiState.value.nbPoints,
) reponseChoisie = false
} )
},
uiState.value.duréePartie * count
)
count++
} }
} }
} }
@ -49,4 +56,17 @@ class KahootViewModel: ViewModel() {
reponseChoisie = true) reponseChoisie = true)
Log.d("KahootViewModel","Le joueur à ${uiState.value.nbPoints}") Log.d("KahootViewModel","Le joueur à ${uiState.value.nbPoints}")
} }
companion object {
val Factory: ViewModelProvider.Factory = object : ViewModelProvider.Factory {
@Suppress("UNCHECKED_CAST")
override fun <T : ViewModel> create(
modelClass: Class<T>
): T {
return KahootViewModel(
QuestionAPIRepository()
) as T
}
}
}
} }

@ -2,21 +2,24 @@ package fr.iut.sciencequest.ViewModels
import android.util.Log import android.util.Log
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import fr.iut.sciencequest.ViewModels.UiStates.PenduUIState import fr.iut.sciencequest.ViewModels.UiStates.PenduUIState
import fr.iut.sciencequest.model.buisness.Scientifique.fetchScientifiqueById
import fr.iut.sciencequest.model.buisness.Scientifique.fetchScientifiques
import fr.iut.sciencequest.model.dto.extensions.ToModel import fr.iut.sciencequest.model.dto.extensions.ToModel
import fr.iut.sciencequest.model.repositories.scientifique.IScientifiqueRepository
import fr.iut.sciencequest.model.repositories.scientifique.ScientifiqueAPIRepository
import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
class PenduViewModel : ViewModel() { class PenduViewModel(
val scientifiqueRepo: IScientifiqueRepository
) : ViewModel() {
var uiState = MutableStateFlow(PenduUIState()) var uiState = MutableStateFlow(PenduUIState())
fun InitPartie() { fun InitPartie() {
Log.d("PenduViewModel","Un utilisateur initialise une partie") Log.d("PenduViewModel","Un utilisateur initialise une partie")
viewModelScope.launch { viewModelScope.launch {
fetchScientifiqueById(1).collect { scientifiqueRepo.fetchScientifiqueById(1).collect {
val nomComplet = it.prenom + " " + it.nom val nomComplet = it.prenom + " " + it.nom
Log.d("ViewModelPendu",nomComplet) Log.d("ViewModelPendu",nomComplet)
var motATrou = "" var motATrou = ""
@ -82,4 +85,17 @@ class PenduViewModel : ViewModel() {
) )
} }
} }
companion object {
val Factory: ViewModelProvider.Factory = object : ViewModelProvider.Factory {
@Suppress("UNCHECKED_CAST")
override fun <T : ViewModel> create(
modelClass: Class<T>
): T {
return PenduViewModel(
ScientifiqueAPIRepository()
) as T
}
}
}
} }

@ -16,13 +16,7 @@ class ScientifiquesDecouvertsVM(
) : ViewModel() { ) : ViewModel() {
private val _listeScientifique: MutableStateFlow<ScientifiqueDecouvertsUIState> = MutableStateFlow(ScientifiqueDecouvertsUIState()) private val _listeScientifique: MutableStateFlow<ScientifiqueDecouvertsUIState> = MutableStateFlow(ScientifiqueDecouvertsUIState())
val listeScientifique = _listeScientifique.asStateFlow() val listeScientifique = _listeScientifique.asStateFlow()
// fun getScientifiqueById(id: Int) {
// Log.d("ViewModelScientifique", "Recup un scientifique d'id: $id")
// var scientifique: Scientifique
// viewModelScope.launch {
//
// }
// }
fun getScientifiques(page: Int) { fun getScientifiques(page: Int) {
Log.d("ViewModelScientifique","Recup la liste de scientifiques") Log.d("ViewModelScientifique","Recup la liste de scientifiques")
viewModelScope.launch { viewModelScope.launch {

Loading…
Cancel
Save