From 6e27dac780f83061b562f797a6acbaf6bc4f5a25 Mon Sep 17 00:00:00 2001 From: Renaud BEURET Date: Tue, 2 Apr 2024 13:39:18 +0200 Subject: [PATCH] [FIX] Factory fonctionnelle --- .../ViewModels/ScientifiquesDecouvertsVM.kt | 34 +++++-------------- .../scientifique/ScientifiqueAPIRepository.kt | 2 +- .../scientifiques/ScientifiqueListeScreen.kt | 5 ++- 3 files changed, 14 insertions(+), 27 deletions(-) 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 530548c..df79854 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 @@ -1,32 +1,21 @@ 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.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 fr.iut.sciencequest.model.repositories.scientifique.ScientifiqueAPIRepository import kotlinx.coroutines.flow.MutableStateFlow -import kotlinx.coroutines.flow.collect +import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.launch class ScientifiquesDecouvertsVM( - val repository: IScientifiqueRepository, - var listeScientifique: MutableStateFlow = MutableStateFlow(ScientifiqueDecouvertsUIState()) + val repository: IScientifiqueRepository ) : 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 @@ -38,7 +27,7 @@ class ScientifiquesDecouvertsVM( Log.d("ViewModelScientifique","Recup la liste de scientifiques") viewModelScope.launch { repository.fetchScientifiques(page).collect { - listeScientifique.value = ScientifiqueDecouvertsUIState(it.toMutableList()) + _listeScientifique.value = ScientifiqueDecouvertsUIState(it.toMutableList()) } } } @@ -47,17 +36,12 @@ class ScientifiquesDecouvertsVM( val Factory: ViewModelProvider.Factory = object : ViewModelProvider.Factory { @Suppress("UNCHECKED_CAST") override fun create( - modelClass: Class, - extras: CreationExtras + modelClass: Class ): 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( - + ScientifiqueAPIRepository() ) as T } } + } } \ 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 index 49953ff..746e1af 100644 --- 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 @@ -9,7 +9,7 @@ import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flow import retrofit2.create -class ScientifqueAPIRepository: IScientifiqueRepository { +class ScientifiqueAPIRepository: IScientifiqueRepository { suspend override fun fetchScientifiqueById(id: Int): Flow = flow { val serviceClient = createRequestService().create() try { 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..9cec033 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 @@ -3,6 +3,7 @@ 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 @@ -25,7 +26,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