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/ViewModels/ScientifiquesDecouvertsVM.kt b/android/app/src/main/java/fr/iut/sciencequest/ViewModels/ScientifiquesDecouvertsVM.kt
index f2e3f0e..530548c 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
@@ -7,18 +7,25 @@ import androidx.compose.runtime.toMutableStateList
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
+import androidx.lifecycle.ViewModelProvider
+import androidx.lifecycle.ViewModelProvider.AndroidViewModelFactory.Companion.APPLICATION_KEY
+import androidx.lifecycle.createSavedStateHandle
import androidx.lifecycle.viewModelScope
+import androidx.lifecycle.viewmodel.CreationExtras
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 fr.iut.sciencequest.model.repositories.scientifique.IScientifiqueRepository
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.launch
-class ScientifiquesDecouvertsVM : ViewModel() {
- var listeScientifique: MutableStateFlow = MutableStateFlow(ScientifiqueDecouvertsUIState())
+class ScientifiquesDecouvertsVM(
+ val repository: IScientifiqueRepository,
+ var listeScientifique: MutableStateFlow = MutableStateFlow(ScientifiqueDecouvertsUIState())
+) : ViewModel() {
// fun getScientifiqueById(id: Int) {
// Log.d("ViewModelScientifique", "Recup un scientifique d'id: $id")
@@ -30,9 +37,27 @@ class ScientifiquesDecouvertsVM : ViewModel() {
fun getScientifiques(page: Int) {
Log.d("ViewModelScientifique","Recup la liste de scientifiques")
viewModelScope.launch {
- fetchScientifiques(page).collect {
- listeScientifique.value = ScientifiqueDecouvertsUIState(it.scientifiques.ToModel().toMutableList())
+ repository.fetchScientifiques(page).collect {
+ listeScientifique.value = ScientifiqueDecouvertsUIState(it.toMutableList())
}
}
}
+ companion object {
+
+ val Factory: ViewModelProvider.Factory = object : ViewModelProvider.Factory {
+ @Suppress("UNCHECKED_CAST")
+ override fun create(
+ modelClass: Class,
+ extras: CreationExtras
+ ): T {
+ // Get the Application object from extras
+ val application = checkNotNull(extras[APPLICATION_KEY])
+ // Create a SavedStateHandle for this ViewModel from extras
+ val savedStateHandle = extras.createSavedStateHandle()
+
+ return ScientifiquesDecouvertsVM(
+
+ ) as T
+ }
+ }
}
\ No newline at end of file
diff --git a/android/app/src/main/java/fr/iut/sciencequest/model/buisness/Scientifique/ScientifiquesRequestor.kt b/android/app/src/main/java/fr/iut/sciencequest/model/buisness/Scientifique/ScientifiquesRequestor.kt
deleted file mode 100644
index 519a8ed..0000000
--- a/android/app/src/main/java/fr/iut/sciencequest/model/buisness/Scientifique/ScientifiquesRequestor.kt
+++ /dev/null
@@ -1,32 +0,0 @@
-package fr.iut.sciencequest.model.buisness.Scientifique
-
-import android.util.Log
-import fr.iut.sciencequest.model.buisness.createRequestService
-import fr.iut.sciencequest.model.dto.ScientifiqueDTOs.ScientifiqueDTO
-import fr.iut.sciencequest.model.dto.ScientifiqueDTOs.ScientifiqueListDTO
-import kotlinx.coroutines.flow.flow
-import retrofit2.Call
-import retrofit2.Callback
-import retrofit2.Response
-import retrofit2.create
-import java.lang.IllegalArgumentException
-
-suspend fun fetchScientifiqueById(id: Int) = flow {
- val serviceClient = createRequestService().create()
- try {
- val response = serviceClient.getScientifique(id)
- emit(response)
- } catch (e: Exception) {
- Log.e("Requete API",e.message.toString())
- }
-}
-
-fun fetchScientifiques(index: Int) = flow {
- val serviceClient = createRequestService().create()
- try {
- val response = serviceClient.getScientifiques(index)
- emit(response)
- } catch (e: Exception) {
- Log.e("Requete API",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..f99b056
--- /dev/null
+++ b/android/app/src/main/java/fr/iut/sciencequest/model/repositories/scientifique/IScientifiqueRepository.kt
@@ -0,0 +1,9 @@
+package fr.iut.sciencequest.model.repositories.scientifique
+
+import fr.iut.sciencequest.model.metier.Scientifique
+import kotlinx.coroutines.flow.Flow
+
+interface IScientifiqueRepository {
+ suspend fun fetchScientifiques(index: Int): Flow>
+ suspend fun fetchScientifiqueById(id: Int): Flow
+}
\ No newline at end of file
diff --git a/android/app/src/main/java/fr/iut/sciencequest/model/repositories/scientifique/ScientifqueAPIRepository.kt b/android/app/src/main/java/fr/iut/sciencequest/model/repositories/scientifique/ScientifqueAPIRepository.kt
new file mode 100644
index 0000000..49953ff
--- /dev/null
+++ b/android/app/src/main/java/fr/iut/sciencequest/model/repositories/scientifique/ScientifqueAPIRepository.kt
@@ -0,0 +1,32 @@
+package fr.iut.sciencequest.model.repositories.scientifique
+
+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.extensions.ToModel
+import fr.iut.sciencequest.model.metier.Scientifique
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.flow
+import retrofit2.create
+
+class ScientifqueAPIRepository: IScientifiqueRepository {
+ suspend override fun fetchScientifiqueById(id: Int): Flow = flow {
+ val serviceClient = createRequestService().create()
+ try {
+ val response = serviceClient.getScientifique(id)
+ emit(response.ToModel())
+ } catch (e: Exception) {
+ Log.e("Requete API",e.message.toString())
+ }
+ }
+
+ suspend override fun fetchScientifiques(index: Int): Flow> = flow {
+ val serviceClient = createRequestService().create()
+ try {
+ val response = serviceClient.getScientifiques(index)
+ emit(response.scientifiques.ToModel())
+ } catch (e: Exception) {
+ Log.e("Requete API",e.message.toString())
+ }
+ }
+}
\ No newline at end of file