[FIX] Factory fonctionnelle

RepositoryAndroid
Renaud BEURET 3 months ago
parent dae9bb2064
commit 6e27dac780

@ -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<ScientifiqueDecouvertsUIState> = MutableStateFlow(ScientifiqueDecouvertsUIState())
val repository: IScientifiqueRepository
) : ViewModel() {
private val _listeScientifique: MutableStateFlow<ScientifiqueDecouvertsUIState> = 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 <T : ViewModel> create(
modelClass: Class<T>,
extras: CreationExtras
modelClass: Class<T>
): 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
}
}
}
}

@ -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<Scientifique> = flow {
val serviceClient = createRequestService().create<ScientifiqueRequestService>()
try {

@ -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)
}
}
Loading…
Cancel
Save