[FIX] Lance exception si param incorrect

Android
Renaud BEURET 1 year ago
parent 42c9c4b2cd
commit 1a3edfbdef

@ -2,19 +2,13 @@ package fr.iut.sciencequest.viewModels
import android.os.Handler import android.os.Handler
import android.os.Looper import android.os.Looper
import android.util.Log
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import fr.iut.sciencequest.model.dto.extensions.ToModel
import fr.iut.sciencequest.model.repositories.question.IQuestionRepository import fr.iut.sciencequest.model.repositories.question.IQuestionRepository
import fr.iut.sciencequest.model.repositories.question.QuestionAPIRepository import fr.iut.sciencequest.model.repositories.question.QuestionAPIRepository
import fr.iut.sciencequest.model.repositories.question.QuestionStubRepository
import fr.iut.sciencequest.stub.StubQuestionWithReponses
import fr.iut.sciencequest.stub.StubQuestionWithReponses2
import fr.iut.sciencequest.viewModels.uixStates.KahootUIState import fr.iut.sciencequest.viewModels.uixStates.KahootUIState
import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@ -32,7 +26,7 @@ class KahootViewModel(
_uiState.value = KahootUIState( _uiState.value = KahootUIState(
questionRepo.questions.value.get(0), questionRepo.questions.value.get(0),
duréePartie = uiState.value.duréePartie, dureePartie = uiState.value.dureePartie,
nbPoints = uiState.value.nbPoints, nbPoints = uiState.value.nbPoints,
reponseChoisie = false reponseChoisie = false
) )
@ -41,12 +35,12 @@ class KahootViewModel(
{ {
_uiState.value = KahootUIState( _uiState.value = KahootUIState(
questionRepo.questions.value.get(index), questionRepo.questions.value.get(index),
duréePartie = uiState.value.duréePartie, dureePartie = uiState.value.dureePartie,
nbPoints = uiState.value.nbPoints, nbPoints = uiState.value.nbPoints,
reponseChoisie = false reponseChoisie = false
) )
}, },
uiState.value.duréePartie * index uiState.value.dureePartie * index
) )
} }
} }
@ -54,12 +48,17 @@ class KahootViewModel(
// NOTE : tpsReponse en ms // NOTE : tpsReponse en ms
fun ajouterPoints(tpsReponse: Long) { fun ajouterPoints(tpsReponse: Long) {
if (tpsReponse < 0) {
throw IllegalArgumentException("ERREUR: Temps négatif donné à l'ajout de points")
} else if (tpsReponse > uiState.value.dureePartie) {
throw IllegalArgumentException("ERREUR: Utilsateur à répondu trop lentement")
}
if (uiState.value.reponseChoisie) { if (uiState.value.reponseChoisie) {
return return
} }
val nbPoints: Int = (10_000 - tpsReponse).toInt() val nbPoints: Int = (uiState.value.dureePartie - tpsReponse).toInt()
_uiState.value = KahootUIState(uiState.value.question, _uiState.value = KahootUIState(uiState.value.question,
duréePartie = uiState.value.duréePartie, dureePartie = uiState.value.dureePartie,
nbPoints = uiState.value.nbPoints + nbPoints, nbPoints = uiState.value.nbPoints + nbPoints,
reponseChoisie = true) reponseChoisie = true)
} }

@ -8,6 +8,6 @@ data class KahootUIState (
val question: QuestionWithSimpleReponse = StubQuestionWithReponses.ToModel(), val question: QuestionWithSimpleReponse = StubQuestionWithReponses.ToModel(),
val reponseChoisie: Boolean = false, val reponseChoisie: Boolean = false,
// NOTE : Supposé en millisecondes // NOTE : Supposé en millisecondes
val duréePartie: Long = 10_000, val dureePartie: Long = 10_000,
val nbPoints: Int = 0 val nbPoints: Int = 0
) )
Loading…
Cancel
Save