#MVVM - Historique des commandes

On va retourner sur l’écran du compte (Historique des commande pour le moment) qui utilise un SideEffect pour la requête réseau. Et on va l’améliorer avec la mise place d’un ViewModel AccountViewModel qui sera plus robuste et évolutif pour :

  • GĂ©rer l’état de la liste des commandes
  • (Plus tard) GĂ©rer l’inscription / connexion de l’utilisateur
  • (Plus tard) Afficher les informations du compte de l’utilisateur
  • (Plus tard) GĂ©rer la dĂ©connexion de l’utilisateur

#đź§  Notions

  • Refactoring et utilisation de ViewModel
  • Mise en place d’un UI State sur une vue Compose

#Etape 1 - ViewModel

#✅ Complétez les tâches suivantes

  • CrĂ©ez un AccountViewModel qui va remplacer le LaunchEffect pour la requĂŞte rĂ©seau, ainsi que vos diffĂ©rentes variables remember pour stocker les donnĂ©es
  • DĂ©placer la logique de la requĂŞte rĂ©seau dans le ViewModel
  • Instancier et connectez votre ViewModel Ă  votre vue Ă  un niveau suffisamment haut pour que les donnĂ©es soient partagĂ©es entre les diffĂ©rents composants de votre vue.

📱 Vue

Normalement vous n’avez pas besoin de changer grand chose dans votre vue, seule la source des données change.

#Etape 2 - Refactoring de la vue

Maintenant que vous avez un ViewModel pour gérer les données de l’historique des commandes, vous allez améliorer la vue pour gérer les différents états de la liste des commandes.

#✅ Complétez les tâches suivantes

  • Mettez en place un UIState pour gĂ©rer les Ă©tats
  • Les Ă©tats de chargement, d’erreurs, de succès et de vide doivent ĂŞtre gĂ©rĂ©s
  • Profitez en pour factoriser vos @Composable pour qu’ils ne soient pas trop gros, et qu’ils se concentrent sur une seule responsabilitĂ©.

🎒 UI State

Dans les ressources vous trouverez des exemples pour gérer les états de votre interface utilisateur.

  • Vous devez afficher un CircularProgressIndicator lors du chargement, un message d’erreur en cas d’erreur, un message de succès si la liste est vide, et la liste des commandes si tout s’est bien passĂ©.

🛠️ Refactoring

Vous pouvez utiliser des @Composable pour factoriser votre code, et des @Preview pour tester vos composants.