From 318c14bec3ee9ee88ea615d52a6b49fa53b625ee Mon Sep 17 00:00:00 2001 From: Renaud BEURET Date: Tue, 2 Apr 2024 15:14:40 +0200 Subject: [PATCH] =?UTF-8?q?[FIX]=20Factory=20et=20utilisent=20un=20repo=20?= =?UTF-8?q?inject=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ViewModels/KahootViewModel.kt | 52 +++++++++++++------ .../sciencequest/ViewModels/PenduViewModel.kt | 24 +++++++-- .../ViewModels/ScientifiquesDecouvertsVM.kt | 8 +-- 3 files changed, 57 insertions(+), 27 deletions(-) diff --git a/android/app/src/main/java/fr/iut/sciencequest/ViewModels/KahootViewModel.kt b/android/app/src/main/java/fr/iut/sciencequest/ViewModels/KahootViewModel.kt index eea6a93..2c3d0e8 100644 --- a/android/app/src/main/java/fr/iut/sciencequest/ViewModels/KahootViewModel.kt +++ b/android/app/src/main/java/fr/iut/sciencequest/ViewModels/KahootViewModel.kt @@ -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 create( + modelClass: Class + ): T { + return KahootViewModel( + QuestionAPIRepository() + ) as T + } + } + } } \ No newline at end of file diff --git a/android/app/src/main/java/fr/iut/sciencequest/ViewModels/PenduViewModel.kt b/android/app/src/main/java/fr/iut/sciencequest/ViewModels/PenduViewModel.kt index a13413b..5e3ae76 100644 --- a/android/app/src/main/java/fr/iut/sciencequest/ViewModels/PenduViewModel.kt +++ b/android/app/src/main/java/fr/iut/sciencequest/ViewModels/PenduViewModel.kt @@ -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 create( + modelClass: Class + ): T { + return PenduViewModel( + ScientifiqueAPIRepository() + ) as T + } + } + } } \ No newline at end of file diff --git a/android/app/src/main/java/fr/iut/sciencequest/ViewModels/ScientifiquesDecouvertsVM.kt b/android/app/src/main/java/fr/iut/sciencequest/ViewModels/ScientifiquesDecouvertsVM.kt index df79854..f40e5a8 100644 --- a/android/app/src/main/java/fr/iut/sciencequest/ViewModels/ScientifiquesDecouvertsVM.kt +++ b/android/app/src/main/java/fr/iut/sciencequest/ViewModels/ScientifiquesDecouvertsVM.kt @@ -16,13 +16,7 @@ class ScientifiquesDecouvertsVM( ) : ViewModel() { private val _listeScientifique: MutableStateFlow = 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 {