diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml
index 31d6335..0c0c338 100644
--- a/.idea/deploymentTargetDropDown.xml
+++ b/.idea/deploymentTargetDropDown.xml
@@ -3,20 +3,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
diff --git a/android/app/src/main/java/fr/iut/sciencequest/MainActivity.kt b/android/app/src/main/java/fr/iut/sciencequest/MainActivity.kt
index 3ea7785..bd86650 100644
--- a/android/app/src/main/java/fr/iut/sciencequest/MainActivity.kt
+++ b/android/app/src/main/java/fr/iut/sciencequest/MainActivity.kt
@@ -1,18 +1,13 @@
package fr.iut.sciencequest
import android.os.Bundle
-import android.util.Log
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
-import androidx.activity.viewModels
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.ui.Modifier
-import fr.iut.sciencequest.ViewModels.ScientifiquesDecouvertsVM
-import fr.iut.sciencequest.model.dto.extensions.ToModel
import fr.iut.sciencequest.navigation.NavHost
-import fr.iut.sciencequest.stub.StubScientifique1
import fr.iut.sciencequest.ui.theme.ScienceQuestTheme
class MainActivity : ComponentActivity() {
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
deleted file mode 100644
index eea6a93..0000000
--- a/android/app/src/main/java/fr/iut/sciencequest/ViewModels/KahootViewModel.kt
+++ /dev/null
@@ -1,52 +0,0 @@
-package fr.iut.sciencequest.ViewModels
-
-import android.os.Handler
-import android.os.Looper
-import android.util.Log
-import androidx.lifecycle.ViewModel
-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 kotlinx.coroutines.flow.MutableStateFlow
-import kotlinx.coroutines.launch
-
-class KahootViewModel: 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
- )
- }
- }
- }
- }
-
- // NOTE : tpsReponse en ms
- fun ajouterPoints(tpsReponse: Long) {
- Log.d("KahootViewModel","Je reçois une réponse")
- if (uiState.value.reponseChoisie) {
- Log.d("KahootViewModel","Le joueur a déjà répondu")
- return
- }
- val nbPoints: Int = (10_000 - tpsReponse).toInt()
- uiState.value = KahootUIState(uiState.value.question,
- duréePartie = uiState.value.duréePartie,
- nbPoints = uiState.value.nbPoints + nbPoints,
- reponseChoisie = true)
- Log.d("KahootViewModel","Le joueur à ${uiState.value.nbPoints}")
- }
-}
\ 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
deleted file mode 100644
index f2e3f0e..0000000
--- a/android/app/src/main/java/fr/iut/sciencequest/ViewModels/ScientifiquesDecouvertsVM.kt
+++ /dev/null
@@ -1,38 +0,0 @@
-package fr.iut.sciencequest.ViewModels
-
-import android.util.Log
-import androidx.compose.runtime.MutableState
-import androidx.compose.runtime.mutableStateListOf
-import androidx.compose.runtime.toMutableStateList
-import androidx.lifecycle.LiveData
-import androidx.lifecycle.MutableLiveData
-import androidx.lifecycle.ViewModel
-import androidx.lifecycle.viewModelScope
-import fr.iut.sciencequest.ViewModels.UiStates.ScientifiqueDecouvertsUIState
-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.metier.Scientifique
-import kotlinx.coroutines.flow.MutableStateFlow
-import kotlinx.coroutines.flow.collect
-import kotlinx.coroutines.launch
-
-class ScientifiquesDecouvertsVM : ViewModel() {
- var listeScientifique: MutableStateFlow = MutableStateFlow(ScientifiqueDecouvertsUIState())
-
- // 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 {
- fetchScientifiques(page).collect {
- listeScientifique.value = ScientifiqueDecouvertsUIState(it.scientifiques.ToModel().toMutableList())
- }
- }
- }
- }
\ No newline at end of file
diff --git a/android/app/src/main/java/fr/iut/sciencequest/ViewModels/UiStates/KahootUIState.kt b/android/app/src/main/java/fr/iut/sciencequest/ViewModels/UiStates/KahootUIState.kt
deleted file mode 100644
index 3048aa3..0000000
--- a/android/app/src/main/java/fr/iut/sciencequest/ViewModels/UiStates/KahootUIState.kt
+++ /dev/null
@@ -1,13 +0,0 @@
-package fr.iut.sciencequest.ViewModels.UiStates
-
-import fr.iut.sciencequest.model.dto.question.QuestionWithSimpleResponseDTO
-import fr.iut.sciencequest.model.dto.reponse.ReponseSimpleDTO
-import fr.iut.sciencequest.stub.StubQuestionWithReponses
-
-data class KahootUIState (
- val question: QuestionWithSimpleResponseDTO = StubQuestionWithReponses,
- val reponseChoisie: Boolean = false,
- // NOTE : Supposé en millisecondes
- val duréePartie: Long = 10_000,
- val nbPoints: Int = 0
-)
\ No newline at end of file
diff --git a/android/app/src/main/java/fr/iut/sciencequest/model/buisness/Question/QuestionRequestor.kt b/android/app/src/main/java/fr/iut/sciencequest/model/buisness/Question/QuestionRequestor.kt
deleted file mode 100644
index 3a0652c..0000000
--- a/android/app/src/main/java/fr/iut/sciencequest/model/buisness/Question/QuestionRequestor.kt
+++ /dev/null
@@ -1,22 +0,0 @@
-package fr.iut.sciencequest.model.buisness.Question
-
-import android.util.Log
-import fr.iut.sciencequest.model.buisness.Scientifique.ScientifiqueRequestService
-import fr.iut.sciencequest.model.buisness.createRequestService
-import fr.iut.sciencequest.model.dto.question.QuestionListDTO
-import kotlinx.coroutines.flow.flow
-import retrofit2.Call
-import retrofit2.Callback
-import retrofit2.Response
-import retrofit2.create
-import java.lang.IllegalArgumentException
-
-suspend fun fetchQuestions(index: Int) = flow {
- val serviceClient = createRequestService().create()
- try {
- val response = serviceClient.getQuestions(index)
- emit(response)
- } catch (e: Exception) {
- Log.e("Requete API Question",e.message.toString())
- }
-}
diff --git a/android/app/src/main/java/fr/iut/sciencequest/model/dto/extensions/QuestionExtension.kt b/android/app/src/main/java/fr/iut/sciencequest/model/dto/extensions/QuestionExtension.kt
new file mode 100644
index 0000000..b42908e
--- /dev/null
+++ b/android/app/src/main/java/fr/iut/sciencequest/model/dto/extensions/QuestionExtension.kt
@@ -0,0 +1,30 @@
+package fr.iut.sciencequest.model.dto.extensions
+
+import fr.iut.sciencequest.model.dto.question.QuestionDTO
+import fr.iut.sciencequest.model.dto.question.QuestionWithSimpleResponseDTO
+import fr.iut.sciencequest.model.metier.question.Question
+import fr.iut.sciencequest.model.metier.question.QuestionWithSimpleReponse
+
+fun QuestionDTO.ToModel(): Question {
+ return Question(
+ this.id,
+ this.question,
+ this.reponses.ToModel()
+ )
+}
+
+fun List.ToModel(): List {
+ val liste = mutableListOf()
+ for (question in this) {
+ liste.add(question.ToModel())
+ }
+ return liste
+}
+
+fun Question.ToQuestionWithSimpleReponse(): QuestionWithSimpleReponse {
+ return QuestionWithSimpleReponse(
+ this.id,
+ this.question,
+ this.reponses.ToSimpleReponses()
+ )
+}
\ No newline at end of file
diff --git a/android/app/src/main/java/fr/iut/sciencequest/model/dto/extensions/QuestionWithSimpleReponseExtension.kt b/android/app/src/main/java/fr/iut/sciencequest/model/dto/extensions/QuestionWithSimpleReponseExtension.kt
new file mode 100644
index 0000000..c0587e4
--- /dev/null
+++ b/android/app/src/main/java/fr/iut/sciencequest/model/dto/extensions/QuestionWithSimpleReponseExtension.kt
@@ -0,0 +1,20 @@
+package fr.iut.sciencequest.model.dto.extensions
+
+import fr.iut.sciencequest.model.dto.question.QuestionWithSimpleResponseDTO
+import fr.iut.sciencequest.model.metier.question.QuestionWithSimpleReponse
+
+fun QuestionWithSimpleResponseDTO.ToModel(): QuestionWithSimpleReponse {
+ return QuestionWithSimpleReponse(
+ this.id,
+ this.question,
+ this.reponses.ToModel()
+ )
+}
+
+fun List.ToModel(): List {
+ val liste = ArrayList()
+ for (question in this) {
+ liste.add(question.ToModel())
+ }
+ return liste
+}
\ No newline at end of file
diff --git a/android/app/src/main/java/fr/iut/sciencequest/model/dto/extensions/ReponseExtension.kt b/android/app/src/main/java/fr/iut/sciencequest/model/dto/extensions/ReponseExtension.kt
new file mode 100644
index 0000000..eca76bd
--- /dev/null
+++ b/android/app/src/main/java/fr/iut/sciencequest/model/dto/extensions/ReponseExtension.kt
@@ -0,0 +1,37 @@
+package fr.iut.sciencequest.model.dto.extensions
+
+import fr.iut.sciencequest.model.dto.reponse.ReponseDTO
+import fr.iut.sciencequest.model.metier.reponse.Reponse
+import fr.iut.sciencequest.model.metier.reponse.ReponseSimple
+
+fun ReponseDTO.ToModel(): Reponse {
+ return Reponse(
+ this.id,
+ this.reponse,
+ this.question.ToModel(),
+ this.scientifique.ToModel()
+ )
+}
+
+fun List.ToModel(): List {
+ val liste = ArrayList()
+ for (reponse in this) {
+ liste.add(reponse.ToModel())
+ }
+ return liste
+}
+
+fun Reponse.ToSimpleReponse(): ReponseSimple {
+ return ReponseSimple(
+ this.id,
+ this.reponse
+ )
+}
+
+fun List.ToSimpleReponses(): List {
+ val liste = ArrayList()
+ for (reponse in this) {
+ liste.add(reponse.ToSimpleReponse())
+ }
+ return liste
+}
\ No newline at end of file
diff --git a/android/app/src/main/java/fr/iut/sciencequest/model/dto/extensions/SimpleReponseExtension.kt b/android/app/src/main/java/fr/iut/sciencequest/model/dto/extensions/SimpleReponseExtension.kt
new file mode 100644
index 0000000..bae8326
--- /dev/null
+++ b/android/app/src/main/java/fr/iut/sciencequest/model/dto/extensions/SimpleReponseExtension.kt
@@ -0,0 +1,19 @@
+package fr.iut.sciencequest.model.dto.extensions
+
+import fr.iut.sciencequest.model.dto.reponse.ReponseSimpleDTO
+import fr.iut.sciencequest.model.metier.reponse.ReponseSimple
+
+fun ReponseSimpleDTO.ToModel(): ReponseSimple {
+ return ReponseSimple(
+ this.id,
+ this.reponse
+ )
+}
+
+fun List.ToModel(): List {
+ val liste = ArrayList()
+ for (reponse in this) {
+ liste.add(reponse.ToModel())
+ }
+ return liste
+}
\ No newline at end of file
diff --git a/android/app/src/main/java/fr/iut/sciencequest/model/metier/Question.kt b/android/app/src/main/java/fr/iut/sciencequest/model/metier/Question.kt
deleted file mode 100644
index d6c1550..0000000
--- a/android/app/src/main/java/fr/iut/sciencequest/model/metier/Question.kt
+++ /dev/null
@@ -1,7 +0,0 @@
-package fr.iut.sciencequest.model.metier
-class Question(
- val id: Int,
- val question: String,
- val reponses: List
-) {}
-
diff --git a/android/app/src/main/java/fr/iut/sciencequest/model/metier/Reponse.kt b/android/app/src/main/java/fr/iut/sciencequest/model/metier/Reponse.kt
deleted file mode 100644
index aaacc6d..0000000
--- a/android/app/src/main/java/fr/iut/sciencequest/model/metier/Reponse.kt
+++ /dev/null
@@ -1,9 +0,0 @@
-package fr.iut.sciencequest.model.metier
-
-class Reponse (
- val id: Int,
- val reponse: String,
- val question: Question,
- val scientifique: Scientifique
-) {}
-
diff --git a/android/app/src/main/java/fr/iut/sciencequest/model/metier/question/Question.kt b/android/app/src/main/java/fr/iut/sciencequest/model/metier/question/Question.kt
new file mode 100644
index 0000000..d0b7802
--- /dev/null
+++ b/android/app/src/main/java/fr/iut/sciencequest/model/metier/question/Question.kt
@@ -0,0 +1,10 @@
+package fr.iut.sciencequest.model.metier.question
+
+import fr.iut.sciencequest.model.metier.reponse.Reponse
+
+class Question(
+ val id: Int,
+ val question: String,
+ val reponses: List
+) {}
+
diff --git a/android/app/src/main/java/fr/iut/sciencequest/model/metier/question/QuestionWithSimpleReponse.kt b/android/app/src/main/java/fr/iut/sciencequest/model/metier/question/QuestionWithSimpleReponse.kt
new file mode 100644
index 0000000..19f39a9
--- /dev/null
+++ b/android/app/src/main/java/fr/iut/sciencequest/model/metier/question/QuestionWithSimpleReponse.kt
@@ -0,0 +1,10 @@
+package fr.iut.sciencequest.model.metier.question
+
+import fr.iut.sciencequest.model.metier.reponse.Reponse
+import fr.iut.sciencequest.model.metier.reponse.ReponseSimple
+
+class QuestionWithSimpleReponse (
+ val id: Int,
+ val question: String,
+ val reponses: List
+)
\ No newline at end of file
diff --git a/android/app/src/main/java/fr/iut/sciencequest/model/metier/reponse/Reponse.kt b/android/app/src/main/java/fr/iut/sciencequest/model/metier/reponse/Reponse.kt
new file mode 100644
index 0000000..40f5f28
--- /dev/null
+++ b/android/app/src/main/java/fr/iut/sciencequest/model/metier/reponse/Reponse.kt
@@ -0,0 +1,12 @@
+package fr.iut.sciencequest.model.metier.reponse
+
+import fr.iut.sciencequest.model.metier.question.Question
+import fr.iut.sciencequest.model.metier.Scientifique
+
+class Reponse (
+ val id: Int,
+ val reponse: String,
+ val question: Question,
+ val scientifique: Scientifique
+) {}
+
diff --git a/android/app/src/main/java/fr/iut/sciencequest/model/metier/reponse/ReponseSimple.kt b/android/app/src/main/java/fr/iut/sciencequest/model/metier/reponse/ReponseSimple.kt
new file mode 100644
index 0000000..2bcddb3
--- /dev/null
+++ b/android/app/src/main/java/fr/iut/sciencequest/model/metier/reponse/ReponseSimple.kt
@@ -0,0 +1,11 @@
+package fr.iut.sciencequest.model.metier.reponse
+
+class ReponseSimple {
+ val id: Int
+ val reponse: String
+
+ constructor(id: Int, reponse: String) {
+ this.id = id
+ this.reponse = reponse
+ }
+}
\ No newline at end of file
diff --git a/android/app/src/main/java/fr/iut/sciencequest/model/repositories/question/IQuestionRepository.kt b/android/app/src/main/java/fr/iut/sciencequest/model/repositories/question/IQuestionRepository.kt
new file mode 100644
index 0000000..4518060
--- /dev/null
+++ b/android/app/src/main/java/fr/iut/sciencequest/model/repositories/question/IQuestionRepository.kt
@@ -0,0 +1,11 @@
+package fr.iut.sciencequest.model.repositories.question
+
+import fr.iut.sciencequest.model.metier.question.Question
+import fr.iut.sciencequest.model.metier.question.QuestionWithSimpleReponse
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.StateFlow
+
+interface IQuestionRepository {
+ val questions: StateFlow>
+ suspend fun fetchQuestions(index: Int)
+}
\ No newline at end of file
diff --git a/android/app/src/main/java/fr/iut/sciencequest/model/repositories/question/QuestionAPIRepository.kt b/android/app/src/main/java/fr/iut/sciencequest/model/repositories/question/QuestionAPIRepository.kt
new file mode 100644
index 0000000..45b69c5
--- /dev/null
+++ b/android/app/src/main/java/fr/iut/sciencequest/model/repositories/question/QuestionAPIRepository.kt
@@ -0,0 +1,31 @@
+package fr.iut.sciencequest.model.repositories.question
+
+import android.util.Log
+import fr.iut.sciencequest.model.buisness.Question.QuestionRequestService
+import fr.iut.sciencequest.model.buisness.createRequestService
+import fr.iut.sciencequest.model.dto.extensions.ToModel
+import fr.iut.sciencequest.model.metier.question.Question
+import fr.iut.sciencequest.model.metier.question.QuestionWithSimpleReponse
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.MutableStateFlow
+import kotlinx.coroutines.flow.StateFlow
+import kotlinx.coroutines.flow.asStateFlow
+import kotlinx.coroutines.flow.flow
+import kotlinx.coroutines.flow.update
+import retrofit2.create
+
+class QuestionAPIRepository : IQuestionRepository {
+
+ private val _questions = MutableStateFlow>(emptyList())
+ override val questions: StateFlow>
+ get() = _questions.asStateFlow()
+
+ override suspend fun fetchQuestions(index: Int) {
+ val serviceClient = createRequestService().create()
+ try {
+ _questions.value = serviceClient.getQuestions(index).questions.ToModel()
+ } catch (e: Exception) {
+ Log.e("Requete API Question", e.message.toString())
+ }
+ }
+}
\ No newline at end of file
diff --git a/android/app/src/main/java/fr/iut/sciencequest/model/repositories/scientifique/IScientifiqueRepository.kt b/android/app/src/main/java/fr/iut/sciencequest/model/repositories/scientifique/IScientifiqueRepository.kt
new file mode 100644
index 0000000..b99473f
--- /dev/null
+++ b/android/app/src/main/java/fr/iut/sciencequest/model/repositories/scientifique/IScientifiqueRepository.kt
@@ -0,0 +1,14 @@
+package fr.iut.sciencequest.model.repositories.scientifique
+
+import fr.iut.sciencequest.model.metier.Scientifique
+import fr.iut.sciencequest.model.metier.question.QuestionWithSimpleReponse
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.StateFlow
+
+interface IScientifiqueRepository {
+
+ val scientifique: StateFlow
+ val scientifiques: StateFlow>
+ suspend fun fetchScientifiques(index: Int)
+ suspend fun fetchScientifiqueById(id: Int)
+}
\ No newline at end of file
diff --git a/android/app/src/main/java/fr/iut/sciencequest/model/repositories/scientifique/ScientifiqueAPIRepository.kt b/android/app/src/main/java/fr/iut/sciencequest/model/repositories/scientifique/ScientifiqueAPIRepository.kt
new file mode 100644
index 0000000..52e9a65
--- /dev/null
+++ b/android/app/src/main/java/fr/iut/sciencequest/model/repositories/scientifique/ScientifiqueAPIRepository.kt
@@ -0,0 +1,44 @@
+package fr.iut.sciencequest.model.repositories.scientifique
+
+import android.util.Log
+import fr.iut.sciencequest.model.buisness.Question.QuestionRequestService
+import fr.iut.sciencequest.model.buisness.Scientifique.ScientifiqueRequestService
+import fr.iut.sciencequest.model.buisness.createRequestService
+import fr.iut.sciencequest.model.dto.extensions.ToModel
+import fr.iut.sciencequest.model.metier.Scientifique
+import fr.iut.sciencequest.stub.StubScientifique1
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.MutableStateFlow
+import kotlinx.coroutines.flow.StateFlow
+import kotlinx.coroutines.flow.asStateFlow
+import kotlinx.coroutines.flow.flow
+import retrofit2.create
+
+class ScientifiqueAPIRepository: IScientifiqueRepository {
+
+ private val _scientifique = MutableStateFlow(StubScientifique1.ToModel())
+ override val scientifique: StateFlow
+ get() = _scientifique.asStateFlow()
+
+ private val _scientifiques = MutableStateFlow>(emptyList())
+ override val scientifiques: StateFlow>
+ get() = _scientifiques.asStateFlow()
+
+ override suspend fun fetchScientifiqueById(id: Int) {
+ val serviceClient = createRequestService().create()
+ try {
+ _scientifique.value = serviceClient.getScientifique(id).ToModel()
+ } catch (e: Exception) {
+ Log.e("Requete API Scientifiqu", e.message.toString())
+ }
+ }
+
+ override suspend fun fetchScientifiques(index: Int) {
+ val serviceClient = createRequestService().create()
+ try {
+ _scientifiques.value = serviceClient.getScientifiques(index).scientifiques.ToModel()
+ } catch (e: Exception) {
+ Log.e("Requete API Scientifiqu", e.message.toString())
+ }
+ }
+}
\ No newline at end of file
diff --git a/android/app/src/main/java/fr/iut/sciencequest/model/repositories/scientifique/ScientifiqueStubRepostory.kt b/android/app/src/main/java/fr/iut/sciencequest/model/repositories/scientifique/ScientifiqueStubRepostory.kt
new file mode 100644
index 0000000..65226a5
--- /dev/null
+++ b/android/app/src/main/java/fr/iut/sciencequest/model/repositories/scientifique/ScientifiqueStubRepostory.kt
@@ -0,0 +1,39 @@
+package fr.iut.sciencequest.model.repositories.scientifique
+
+import android.content.res.Resources.NotFoundException
+import fr.iut.sciencequest.model.dto.extensions.ToModel
+import fr.iut.sciencequest.model.metier.Scientifique
+import fr.iut.sciencequest.stub.StubScientifique1
+import fr.iut.sciencequest.stub.StubScientifique2
+import kotlinx.coroutines.flow.MutableStateFlow
+import kotlinx.coroutines.flow.StateFlow
+import kotlinx.coroutines.flow.asStateFlow
+
+class ScientifiqueStubRepostory : IScientifiqueRepository {
+
+ private var listeStub : MutableList = mutableListOf(
+ StubScientifique1.ToModel(),
+ StubScientifique2.ToModel()
+ )
+ private val _scientifique = MutableStateFlow(StubScientifique1.ToModel())
+ override val scientifique: StateFlow
+ get() = _scientifique.asStateFlow()
+ private val _scientifiques = MutableStateFlow>(emptyList())
+ override val scientifiques: StateFlow>
+ get() = _scientifiques.asStateFlow()
+
+ override suspend fun fetchScientifiques(index: Int) {
+ _scientifiques.value = listeStub
+ }
+
+ 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) {
+ listeStub = scientifiques
+ }
+}
\ No newline at end of file
diff --git a/android/app/src/main/java/fr/iut/sciencequest/navigation/NavHost.kt b/android/app/src/main/java/fr/iut/sciencequest/navigation/NavHost.kt
index 3e1dcb7..cd50bd8 100644
--- a/android/app/src/main/java/fr/iut/sciencequest/navigation/NavHost.kt
+++ b/android/app/src/main/java/fr/iut/sciencequest/navigation/NavHost.kt
@@ -1,17 +1,11 @@
package fr.iut.sciencequest.navigation
-import android.content.Context
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
-import androidx.lifecycle.viewmodel.compose.viewModel
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController
-import fr.iut.sciencequest.ViewModels.KahootViewModel
-import fr.iut.sciencequest.ViewModels.PenduViewModel
-import fr.iut.sciencequest.ViewModels.ScientifiquesDecouvertsVM
-import fr.iut.sciencequest.stub.StubQuestionWithReponses
import fr.iut.sciencequest.view.AccountScreen
import fr.iut.sciencequest.view.HomeScreen
import fr.iut.sciencequest.view.LoginScreen
@@ -22,7 +16,7 @@ import fr.iut.sciencequest.view.scientifiques.scientifiqueListeScreen
@Composable
-fun NavHost(kahootVM: KahootViewModel = viewModel(), penduVM: PenduViewModel = viewModel()) {
+fun NavHost() {
val navController = rememberNavController()
NavHost(
modifier = Modifier.fillMaxSize(),
@@ -38,11 +32,9 @@ fun NavHost(kahootVM: KahootViewModel = viewModel(), penduVM: PenduViewModel = v
navController.navigate("home")
},
goToPendu = {
- penduVM.InitPartie()
navController.navigate("pendu")
},
goToKahoot = {
- kahootVM.lancerPartie()
navController.navigate("kahoot")
},
goToQui = {
@@ -75,7 +67,6 @@ fun NavHost(kahootVM: KahootViewModel = viewModel(), penduVM: PenduViewModel = v
composable(route = "pendu") {
PenduScreen(
- viewModel = penduVM,
goToAccount = {
navController.navigate("account")
},
@@ -92,8 +83,7 @@ fun NavHost(kahootVM: KahootViewModel = viewModel(), penduVM: PenduViewModel = v
},
goToHome = {
navController.navigate("home")
- },
- viewModel = kahootVM
+ }
)
}
diff --git a/android/app/src/main/java/fr/iut/sciencequest/view/HomeScreen.kt b/android/app/src/main/java/fr/iut/sciencequest/view/HomeScreen.kt
index b816e43..376271c 100644
--- a/android/app/src/main/java/fr/iut/sciencequest/view/HomeScreen.kt
+++ b/android/app/src/main/java/fr/iut/sciencequest/view/HomeScreen.kt
@@ -14,8 +14,6 @@ import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
-import androidx.lifecycle.viewmodel.compose.viewModel
-import fr.iut.sciencequest.ViewModels.KahootViewModel
@Composable
fun HomeScreen(goToHome: () -> Unit,
diff --git a/android/app/src/main/java/fr/iut/sciencequest/view/Login.kt b/android/app/src/main/java/fr/iut/sciencequest/view/Login.kt
index 82cd26f..9b8ecd8 100644
--- a/android/app/src/main/java/fr/iut/sciencequest/view/Login.kt
+++ b/android/app/src/main/java/fr/iut/sciencequest/view/Login.kt
@@ -26,7 +26,7 @@ import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.lifecycle.viewmodel.compose.viewModel
import fr.iut.sciencequest.R
-import fr.iut.sciencequest.ViewModels.LoginViewModel
+import fr.iut.sciencequest.viewModels.LoginViewModel
@Composable
fun LoginScreen(viewModel: LoginViewModel = viewModel(),
diff --git a/android/app/src/main/java/fr/iut/sciencequest/view/games/Kahoot.kt b/android/app/src/main/java/fr/iut/sciencequest/view/games/Kahoot.kt
index 3ab141e..a25a34a 100644
--- a/android/app/src/main/java/fr/iut/sciencequest/view/games/Kahoot.kt
+++ b/android/app/src/main/java/fr/iut/sciencequest/view/games/Kahoot.kt
@@ -11,6 +11,7 @@ import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
import androidx.compose.material3.Button
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
+import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.collectAsState
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
@@ -22,17 +23,21 @@ import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.lifecycle.viewmodel.compose.viewModel
import fr.iut.sciencequest.R
-import fr.iut.sciencequest.ViewModels.KahootViewModel
-import fr.iut.sciencequest.model.dto.question.QuestionWithSimpleResponseDTO
-import fr.iut.sciencequest.model.dto.reponse.ReponseSimpleDTO
+import fr.iut.sciencequest.viewModels.KahootViewModel
+import fr.iut.sciencequest.model.dto.extensions.ToModel
+import fr.iut.sciencequest.model.metier.question.QuestionWithSimpleReponse
+import fr.iut.sciencequest.model.metier.reponse.ReponseSimple
import fr.iut.sciencequest.stub.StubQuestionWithReponses
import fr.iut.sciencequest.view.TopBar
@Composable
-fun KahootScreen(viewModel: KahootViewModel = viewModel(),
+fun KahootScreen(viewModel: KahootViewModel = viewModel(factory = KahootViewModel.ApiFactory),
goToAccount: () -> Unit,
goToHome: () -> Unit) {
val state = viewModel.uiState.collectAsState()
+ LaunchedEffect(key1 = Unit) {
+ viewModel.lancerPartie()
+ }
Column(modifier = Modifier.fillMaxWidth()) {
TopBar(goToAccount, goToHome, stringResource(id = R.string.kahoot))
@@ -53,13 +58,14 @@ fun KahootScreenPreview(){
@Composable
fun KahootPlayerPreview(){
val i = 0
- KahootPlayer(question = StubQuestionWithReponses) {}
+ KahootPlayer(question = StubQuestionWithReponses.ToModel()) {}
}
@Composable
-fun KahootPlayer(question: QuestionWithSimpleResponseDTO,
- sendResponse: (Long) -> Unit){
+fun KahootPlayer(question: QuestionWithSimpleReponse,
+ sendReponse: (Long) -> Unit){
+
val context = LocalContext.current;
val currTime = System.currentTimeMillis()
Column (
@@ -69,7 +75,7 @@ fun KahootPlayer(question: QuestionWithSimpleResponseDTO,
) {
KahootQuestion(question = question.question)
KahootReponses(reponses = question.reponses) {
- sendResponse(currTime - System.currentTimeMillis())
+ sendReponse(currTime - System.currentTimeMillis())
Toast.makeText(context, it.reponse, Toast.LENGTH_SHORT).show()
}
}
@@ -77,7 +83,7 @@ fun KahootPlayer(question: QuestionWithSimpleResponseDTO,
@Composable
-fun KahootReponses(reponses : List, action: (ReponseSimpleDTO)->Unit) {
+fun KahootReponses(reponses : List, action: (ReponseSimple)->Unit) {
LazyVerticalGrid(columns = GridCells.Fixed(2),
contentPadding = PaddingValues(12.dp),
verticalArrangement = Arrangement.spacedBy(10.dp),
diff --git a/android/app/src/main/java/fr/iut/sciencequest/view/games/Pendu.kt b/android/app/src/main/java/fr/iut/sciencequest/view/games/Pendu.kt
index 7922a2b..44c7c6a 100644
--- a/android/app/src/main/java/fr/iut/sciencequest/view/games/Pendu.kt
+++ b/android/app/src/main/java/fr/iut/sciencequest/view/games/Pendu.kt
@@ -22,11 +22,11 @@ import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.lifecycle.viewmodel.compose.viewModel
import fr.iut.sciencequest.R
-import fr.iut.sciencequest.ViewModels.PenduViewModel
+import fr.iut.sciencequest.viewModels.PenduViewModel
import fr.iut.sciencequest.view.TopBar
@Composable
-fun PenduScreen(viewModel: PenduViewModel = viewModel(),
+fun PenduScreen(viewModel: PenduViewModel = viewModel(factory = PenduViewModel.ApiFactory),
goToAccount: () -> Unit,
goToHome: () -> Unit
) {
diff --git a/android/app/src/main/java/fr/iut/sciencequest/view/games/Qui.kt b/android/app/src/main/java/fr/iut/sciencequest/view/games/Qui.kt
index 61b749b..3ce5cb6 100644
--- a/android/app/src/main/java/fr/iut/sciencequest/view/games/Qui.kt
+++ b/android/app/src/main/java/fr/iut/sciencequest/view/games/Qui.kt
@@ -20,11 +20,14 @@ import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.lifecycle.viewmodel.compose.viewModel
import fr.iut.sciencequest.R
-import fr.iut.sciencequest.ViewModels.KahootViewModel
+import fr.iut.sciencequest.model.dto.extensions.ToModel
import fr.iut.sciencequest.model.dto.question.QuestionWithSimpleResponseDTO
import fr.iut.sciencequest.model.dto.reponse.ReponseSimpleDTO
+import fr.iut.sciencequest.model.metier.question.QuestionWithSimpleReponse
+import fr.iut.sciencequest.model.metier.reponse.ReponseSimple
import fr.iut.sciencequest.stub.StubQuestionWithReponses
import fr.iut.sciencequest.view.TopBar
+import fr.iut.sciencequest.viewModels.KahootViewModel
import java.util.Timer
@Composable
@@ -51,12 +54,12 @@ fun QuiScreenPreview(){
@Composable
fun QuiPlayerPreview(){
val i = 0
- QuiPlayer(question = StubQuestionWithReponses) {}
+ QuiPlayer(question = StubQuestionWithReponses.ToModel()) {}
}
@Composable
-fun QuiPlayer(question: QuestionWithSimpleResponseDTO,
+fun QuiPlayer(question: QuestionWithSimpleReponse,
sendReponse: (Long) -> Unit){
val context = LocalContext.current;
val currTime = System.currentTimeMillis()
@@ -71,7 +74,7 @@ fun QuiPlayer(question: QuestionWithSimpleResponseDTO,
@Composable
-fun QuiReponses(reponses : List, action: (ReponseSimpleDTO)->Unit) {
+fun QuiReponses(reponses : List, action: (ReponseSimple)->Unit) {
LazyVerticalGrid(columns = GridCells.Fixed(2),
contentPadding = PaddingValues(12.dp),
verticalArrangement = Arrangement.spacedBy(10.dp),
diff --git a/android/app/src/main/java/fr/iut/sciencequest/view/scientifiques/ScientifiqueListeScreen.kt b/android/app/src/main/java/fr/iut/sciencequest/view/scientifiques/ScientifiqueListeScreen.kt
index 6431a3a..3f8ceb4 100644
--- a/android/app/src/main/java/fr/iut/sciencequest/view/scientifiques/ScientifiqueListeScreen.kt
+++ b/android/app/src/main/java/fr/iut/sciencequest/view/scientifiques/ScientifiqueListeScreen.kt
@@ -1,22 +1,18 @@
package fr.iut.sciencequest.view.scientifiques
-import android.util.Log
import androidx.compose.material3.Scaffold
import androidx.compose.runtime.Composable
+import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.compose.ui.res.stringResource
-import androidx.compose.ui.tooling.preview.Preview
import androidx.lifecycle.viewmodel.compose.viewModel
import fr.iut.sciencequest.R
-import fr.iut.sciencequest.ViewModels.ScientifiquesDecouvertsVM
-import fr.iut.sciencequest.model.dto.extensions.ToModel
-import fr.iut.sciencequest.model.metier.Scientifique
-import fr.iut.sciencequest.stub.getScientifiqueListeStub
+import fr.iut.sciencequest.viewModels.ScientifiquesDecouvertsVM
import fr.iut.sciencequest.view.TopBar
@Composable
-fun scientifiqueListeScreen(viewModel: ScientifiquesDecouvertsVM = viewModel(),
+fun scientifiqueListeScreen(viewModel: ScientifiquesDecouvertsVM = viewModel(factory = ScientifiquesDecouvertsVM.ApiFactory),
goToAccount: () -> Unit,
goToHome: () -> Unit) {
val liste by viewModel.listeScientifique.collectAsState()
@@ -25,7 +21,9 @@ fun scientifiqueListeScreen(viewModel: ScientifiquesDecouvertsVM = viewModel(),
TopBar(goToAccount, goToHome, stringResource(id = R.string.sc_decouverts))
},
) { innerPadding ->
- viewModel.getScientifiques(1)
+ LaunchedEffect(key1 = Unit) {
+ viewModel.getScientifiques(1)
+ }
scientifiqueListeContainer(liste.scientifiques, innerPadding)
}
}
\ No newline at end of file
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
new file mode 100644
index 0000000..0e534f0
--- /dev/null
+++ b/android/app/src/main/java/fr/iut/sciencequest/viewModels/KahootViewModel.kt
@@ -0,0 +1,72 @@
+package fr.iut.sciencequest.viewModels
+
+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.model.repositories.question.IQuestionRepository
+import fr.iut.sciencequest.model.repositories.question.QuestionAPIRepository
+import fr.iut.sciencequest.viewModels.uixStates.KahootUIState
+import kotlinx.coroutines.flow.MutableStateFlow
+import kotlinx.coroutines.launch
+
+class KahootViewModel(
+ val questionRepo: IQuestionRepository
+): ViewModel() {
+ var uiState = MutableStateFlow(KahootUIState())
+
+ private val handler = Handler(Looper.getMainLooper())
+
+ fun lancerPartie() {
+ viewModelScope.launch {
+ 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++
+ }
+ }
+ }
+
+ // NOTE : tpsReponse en ms
+ fun ajouterPoints(tpsReponse: Long) {
+ Log.d("KahootViewModel","Je reçois une réponse")
+ if (uiState.value.reponseChoisie) {
+ Log.d("KahootViewModel","Le joueur a déjà répondu")
+ return
+ }
+ val nbPoints: Int = (10_000 - tpsReponse).toInt()
+ uiState.value = KahootUIState(uiState.value.question,
+ duréePartie = uiState.value.duréePartie,
+ nbPoints = uiState.value.nbPoints + nbPoints,
+ reponseChoisie = true)
+ Log.d("KahootViewModel","Le joueur à ${uiState.value.nbPoints}")
+ }
+ companion object {
+
+ val ApiFactory: 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/LoginViewModel.kt b/android/app/src/main/java/fr/iut/sciencequest/viewModels/LoginViewModel.kt
similarity index 79%
rename from android/app/src/main/java/fr/iut/sciencequest/ViewModels/LoginViewModel.kt
rename to android/app/src/main/java/fr/iut/sciencequest/viewModels/LoginViewModel.kt
index 2f99c5a..1b4d704 100644
--- a/android/app/src/main/java/fr/iut/sciencequest/ViewModels/LoginViewModel.kt
+++ b/android/app/src/main/java/fr/iut/sciencequest/viewModels/LoginViewModel.kt
@@ -1,7 +1,7 @@
-package fr.iut.sciencequest.ViewModels
+package fr.iut.sciencequest.viewModels
import androidx.lifecycle.ViewModel
-import fr.iut.sciencequest.ViewModels.UiStates.LoginUIState
+import fr.iut.sciencequest.viewModels.uiStates.LoginUIState
import kotlinx.coroutines.flow.MutableStateFlow
class LoginViewModel: ViewModel() {
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
similarity index 67%
rename from android/app/src/main/java/fr/iut/sciencequest/ViewModels/PenduViewModel.kt
rename to android/app/src/main/java/fr/iut/sciencequest/viewModels/PenduViewModel.kt
index 57e9985..f2f1d94 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
@@ -1,32 +1,33 @@
-package fr.iut.sciencequest.ViewModels
+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.fetchScientifiquesInfos
+import fr.iut.sciencequest.viewModels.uiStates.PenduUIState
+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 {
- fetchScientifiquesInfos().collect { scientifiquesInfos ->
- Log.e("PenduViewModel",scientifiquesInfos.nbScientfiques.toString())
- fetchScientifiqueById((1..scientifiquesInfos.nbScientfiques).random()).collect {
- val nomComplet = it.prenom + " " + it.nom
- Log.d("ViewModelPendu",nomComplet)
- var motATrou = ""
- for (chr in nomComplet) {
- motATrou += if (chr == ' ') {
- ' '
- } else {
- '_'
- }
+ scientifiqueRepo.fetchScientifiqueById(1)
+ val scientifique = scientifiqueRepo.scientifique.value
+ val nomComplet = scientifique.prenom + " " + scientifique.nom
+ Log.d("ViewModelPendu",nomComplet)
+ var motATrou = ""
+ for (chr in nomComplet) {
+ motATrou += if (chr == ' ') {
+ ' '
+ } else {
+ '_'
}
uiState.value = PenduUIState(
isActionGood = true,
@@ -37,7 +38,6 @@ class PenduViewModel : ViewModel() {
}
}
- }
// mot : mot à trouver
// motAct : état actuel du mot trouvé par l'utilisateur
@@ -84,4 +84,17 @@ class PenduViewModel : ViewModel() {
)
}
}
+ companion object {
+
+ val ApiFactory: 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
new file mode 100644
index 0000000..1521430
--- /dev/null
+++ b/android/app/src/main/java/fr/iut/sciencequest/viewModels/ScientifiquesDecouvertsVM.kt
@@ -0,0 +1,40 @@
+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.ScientifiqueDecouvertsUIState
+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.asStateFlow
+import kotlinx.coroutines.launch
+
+class ScientifiquesDecouvertsVM(
+ val repository: IScientifiqueRepository
+) : ViewModel() {
+ private val _listeScientifique: MutableStateFlow = MutableStateFlow(ScientifiqueDecouvertsUIState())
+ val listeScientifique = _listeScientifique.asStateFlow()
+
+ fun getScientifiques(page: Int) {
+ Log.d("ViewModelScientifique","Recup la liste de scientifiques")
+ viewModelScope.launch {
+ repository.fetchScientifiques(page)
+ _listeScientifique.value = ScientifiqueDecouvertsUIState(repository.scientifiques.value.toMutableList())
+ }
+ }
+ companion object {
+
+ val ApiFactory: ViewModelProvider.Factory = object : ViewModelProvider.Factory {
+ @Suppress("UNCHECKED_CAST")
+ override fun create(
+ modelClass: Class
+ ): T {
+ return ScientifiquesDecouvertsVM(
+ ScientifiqueAPIRepository()
+ ) as T
+ }
+ }
+ }
+ }
\ No newline at end of file
diff --git a/android/app/src/main/java/fr/iut/sciencequest/viewModels/uiStates/KahootUIState.kt b/android/app/src/main/java/fr/iut/sciencequest/viewModels/uiStates/KahootUIState.kt
new file mode 100644
index 0000000..13054d9
--- /dev/null
+++ b/android/app/src/main/java/fr/iut/sciencequest/viewModels/uiStates/KahootUIState.kt
@@ -0,0 +1,13 @@
+package fr.iut.sciencequest.viewModels.uixStates
+
+import fr.iut.sciencequest.model.dto.extensions.ToModel
+import fr.iut.sciencequest.model.metier.question.QuestionWithSimpleReponse
+import fr.iut.sciencequest.stub.StubQuestionWithReponses
+
+data class KahootUIState (
+ val question: QuestionWithSimpleReponse = StubQuestionWithReponses.ToModel(),
+ val reponseChoisie: Boolean = false,
+ // NOTE : Supposé en millisecondes
+ val duréePartie: Long = 10_000,
+ val nbPoints: Int = 0
+)
\ No newline at end of file
diff --git a/android/app/src/main/java/fr/iut/sciencequest/ViewModels/UiStates/LoginUIState.kt b/android/app/src/main/java/fr/iut/sciencequest/viewModels/uiStates/LoginUIState.kt
similarity index 66%
rename from android/app/src/main/java/fr/iut/sciencequest/ViewModels/UiStates/LoginUIState.kt
rename to android/app/src/main/java/fr/iut/sciencequest/viewModels/uiStates/LoginUIState.kt
index bf2161f..febb072 100644
--- a/android/app/src/main/java/fr/iut/sciencequest/ViewModels/UiStates/LoginUIState.kt
+++ b/android/app/src/main/java/fr/iut/sciencequest/viewModels/uiStates/LoginUIState.kt
@@ -1,4 +1,4 @@
-package fr.iut.sciencequest.ViewModels.UiStates
+package fr.iut.sciencequest.viewModels.uiStates
data class LoginUIState (
val pseudo: String = "Pseudo",
diff --git a/android/app/src/main/java/fr/iut/sciencequest/ViewModels/UiStates/PenduUIState.kt b/android/app/src/main/java/fr/iut/sciencequest/viewModels/uiStates/PenduUIState.kt
similarity index 83%
rename from android/app/src/main/java/fr/iut/sciencequest/ViewModels/UiStates/PenduUIState.kt
rename to android/app/src/main/java/fr/iut/sciencequest/viewModels/uiStates/PenduUIState.kt
index 369fbed..2ec2219 100644
--- a/android/app/src/main/java/fr/iut/sciencequest/ViewModels/UiStates/PenduUIState.kt
+++ b/android/app/src/main/java/fr/iut/sciencequest/viewModels/uiStates/PenduUIState.kt
@@ -1,4 +1,4 @@
-package fr.iut.sciencequest.ViewModels.UiStates
+package fr.iut.sciencequest.viewModels.uiStates
data class PenduUIState(
val isWon: Boolean = false,
diff --git a/android/app/src/main/java/fr/iut/sciencequest/ViewModels/UiStates/ScientifiqueDecouvertsUIState.kt b/android/app/src/main/java/fr/iut/sciencequest/viewModels/uiStates/ScientifiqueDecouvertsUIState.kt
similarity index 87%
rename from android/app/src/main/java/fr/iut/sciencequest/ViewModels/UiStates/ScientifiqueDecouvertsUIState.kt
rename to android/app/src/main/java/fr/iut/sciencequest/viewModels/uiStates/ScientifiqueDecouvertsUIState.kt
index 68eec9e..11b066a 100644
--- a/android/app/src/main/java/fr/iut/sciencequest/ViewModels/UiStates/ScientifiqueDecouvertsUIState.kt
+++ b/android/app/src/main/java/fr/iut/sciencequest/viewModels/uiStates/ScientifiqueDecouvertsUIState.kt
@@ -1,4 +1,4 @@
-package fr.iut.sciencequest.ViewModels.UiStates
+package fr.iut.sciencequest.viewModels.uiStates
import fr.iut.sciencequest.model.metier.Scientifique