[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.util.Log
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.viewModelScope
import fr.iut.sciencequest.ViewModels.UiStates.KahootUIState
import fr.iut.sciencequest.model.buisness.Question.fetchQuestions
import fr.iut.sciencequest.stub.StubQuestionWithReponses2
import fr.iut.sciencequest.model.repositories.question.IQuestionRepository
import fr.iut.sciencequest.model.repositories.question.QuestionAPIRepository
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.launch
class KahootViewModel: ViewModel() {
class KahootViewModel(
val questionRepo: IQuestionRepository
): ViewModel() {
var uiState = MutableStateFlow(KahootUIState())
private val handler = Handler(Looper.getMainLooper())
fun lancerPartie() {
viewModelScope.launch {
fetchQuestions(2).collect() {
for (question in it.questions) {
handler.postDelayed(
{
Log.d("KahootViewModel","J'actualise les questions")
uiState.value = KahootUIState(question,
duréePartie = uiState.value.duréePartie,
nbPoints = uiState.value.nbPoints,
reponseChoisie = false)
},
uiState.value.duréePartie
)
}
questionRepo.fetchQuestions(2)
Log.d("KahootViewModel","J'ai trouvé ${questionRepo.questions.value.size} questions")
var count = 1
for (question in questionRepo.questions.value) {
handler.postDelayed(
{
Log.d("KahootViewModel", "J'actualise les questions")
uiState.value = KahootUIState(
question,
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)
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 androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.viewModelScope
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.repositories.scientifique.IScientifiqueRepository
import fr.iut.sciencequest.model.repositories.scientifique.ScientifiqueAPIRepository
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.launch
class PenduViewModel : ViewModel() {
class PenduViewModel(
val scientifiqueRepo: IScientifiqueRepository
) : ViewModel() {
var uiState = MutableStateFlow(PenduUIState())
fun InitPartie() {
Log.d("PenduViewModel","Un utilisateur initialise une partie")
viewModelScope.launch {
fetchScientifiqueById(1).collect {
scientifiqueRepo.fetchScientifiqueById(1).collect {
val nomComplet = it.prenom + " " + it.nom
Log.d("ViewModelPendu",nomComplet)
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() {
private val _listeScientifique: MutableStateFlow<ScientifiqueDecouvertsUIState> = MutableStateFlow(ScientifiqueDecouvertsUIState())
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) {
Log.d("ViewModelScientifique","Recup la liste de scientifiques")
viewModelScope.launch {

Loading…
Cancel
Save