[FIX] ViewModels

Android
Renaud BEURET 1 year ago
parent 7cc9368a67
commit b3665cc7f8

@ -11,10 +11,6 @@ import kotlinx.coroutines.flow.asStateFlow
class ScientifiqueStubRepostory : IScientifiqueRepository { class ScientifiqueStubRepostory : IScientifiqueRepository {
private var listeStub : MutableList<Scientifique> = mutableListOf(
StubScientifique1.ToModel(),
StubScientifique2.ToModel()
)
private val _scientifique = MutableStateFlow(StubScientifique1.ToModel()) private val _scientifique = MutableStateFlow(StubScientifique1.ToModel())
override val scientifique: StateFlow<Scientifique> override val scientifique: StateFlow<Scientifique>
get() = _scientifique.asStateFlow() get() = _scientifique.asStateFlow()
@ -22,18 +18,29 @@ class ScientifiqueStubRepostory : IScientifiqueRepository {
override val scientifiques: StateFlow<List<Scientifique>> override val scientifiques: StateFlow<List<Scientifique>>
get() = _scientifiques.asStateFlow() get() = _scientifiques.asStateFlow()
// NOTE : la méthode fait volontairement rien,
// Il faut override mais le scientifique est déjà set
// avec la méthode setScientifiqueStubList
// Et hors contexte de test, cette implémentation ne
// sert à rien
override suspend fun fetchScientifiques(index: Int) { override suspend fun fetchScientifiques(index: Int) {
_scientifiques.value = listeStub
} }
// NOTE : la méthode fait volontairement rien,
// Il faut override mais le scientifique est déjà set
// avec la méthode setScientifiqueStub
// Et hors contexte de test, cette implémentation ne
// sert à rien
override suspend fun fetchScientifiqueById(id: Int) { override suspend fun fetchScientifiqueById(id: Int) {
val retrieved = listeStub.find {
it.id == id
} ?: throw NotFoundException("Scientifique introuvable dans le stub")
_scientifique.value = retrieved
} }
fun setScientifiqueStubList(scientifiques: MutableList<Scientifique>) { fun setScientifiqueStubList(scientifiques: MutableList<Scientifique>) {
listeStub = scientifiques _scientifiques.value = scientifiques
}
fun setScientifiqueStub(scientifique: Scientifique) {
_scientifique.value = scientifique
} }
} }

@ -16,12 +16,10 @@ class PenduViewModel(
var uiState = MutableStateFlow(PenduUIState()) var uiState = MutableStateFlow(PenduUIState())
fun InitPartie() { fun InitPartie() {
Log.d("PenduViewModel","Un utilisateur initialise une partie")
viewModelScope.launch { viewModelScope.launch {
scientifiqueRepo.fetchScientifiqueById(1) scientifiqueRepo.fetchScientifiqueById(1)
val scientifique = scientifiqueRepo.scientifique.value val scientifique = scientifiqueRepo.scientifique.value
val nomComplet = scientifique.prenom + " " + scientifique.nom val nomComplet = scientifique.prenom + " " + scientifique.nom
Log.d("ViewModelPendu",nomComplet)
var motATrou = "" var motATrou = ""
for (chr in nomComplet) { for (chr in nomComplet) {
motATrou += if (chr == ' ') { motATrou += if (chr == ' ') {
@ -36,16 +34,13 @@ class PenduViewModel(
) )
} }
} }
} }
// mot : mot à trouver // mot : mot à trouver
// motAct : état actuel du mot trouvé par l'utilisateur // motAct : état actuel du mot trouvé par l'utilisateur
fun PlayAction(lettre: Char) { fun PlayAction(lettre: Char) {
val lowerCaseLetter = lettre.lowercaseChar() val lowerCaseLetter = lettre.lowercaseChar()
Log.d("PenduViewModel","Un utilisateur joue une action")
if (lettre == ' ' || uiState.value.lettresUtilises.contains(lowerCaseLetter)) { if (lettre == ' ' || uiState.value.lettresUtilises.contains(lowerCaseLetter)) {
Log.d("PenduViewModel","L'utilisateur a fait une action invalide")
uiState.value = PenduUIState(false, uiState.value = PenduUIState(false,
false, false,
uiState.value.nbViesRestantes, uiState.value.nbViesRestantes,
@ -55,7 +50,6 @@ class PenduViewModel(
) )
return return
} else if (uiState.value.motATrouver.lowercase().contains(lowerCaseLetter)) { } else if (uiState.value.motATrouver.lowercase().contains(lowerCaseLetter)) {
Log.d("PenduViewModel","L'utilisateur a trouvé une lettre")
var nvMotATrou = uiState.value.motATrou var nvMotATrou = uiState.value.motATrou
for (index in uiState.value.motATrouver.indices) { for (index in uiState.value.motATrouver.indices) {
val letterToCheck = uiState.value.motATrouver[index] val letterToCheck = uiState.value.motATrouver[index]
@ -74,7 +68,6 @@ class PenduViewModel(
uiState.value.lettresUtilises.plus(lowerCaseLetter) uiState.value.lettresUtilises.plus(lowerCaseLetter)
) )
} else { } else {
Log.d("PenduViewModel","L'utilisateur s'est trompé de lettre")
uiState.value = PenduUIState(false, uiState.value = PenduUIState(false,
true, true,
uiState.value.nbViesRestantes - 1, uiState.value.nbViesRestantes - 1,

@ -18,7 +18,6 @@ class ScientifiquesDecouvertsVM(
val listeScientifique = _listeScientifique.asStateFlow() val listeScientifique = _listeScientifique.asStateFlow()
fun getScientifiques(page: Int) { fun getScientifiques(page: Int) {
Log.d("ViewModelScientifique","Recup la liste de scientifiques")
viewModelScope.launch { viewModelScope.launch {
repository.fetchScientifiques(page) repository.fetchScientifiques(page)
_listeScientifique.value = ScientifiqueDecouvertsUIState(repository.scientifiques.value.toMutableList()) _listeScientifique.value = ScientifiqueDecouvertsUIState(repository.scientifiques.value.toMutableList())

Loading…
Cancel
Save