#Le pattern Repository

Dans cette partie, nous allons mettre en place le pattern Repository pour gérer les informations de l’utilisateur connecté.

  • Comme expliquĂ© dans la fiche ressource “Architecture Google”, le pattern Repository permet de sĂ©parer la logique mĂ©tier de la logique de stockage des donnĂ©es.
  • Ça tombe bien, on commence Ă  avoir des chemins complexes d’après notre diagramme de sĂ©quence :

Et encore je n’ai pas modélisé les chemins d’erreurs…

On va donc implémenter un Repository pour alléger le ViewModel et le rendre plus lisible.

#đź§  Notions

  • Refactoring du code actuel pour mettre en place le design pattern Repository

VoilĂ  ce que nous allons faire :

Comme vous le voyez, notre viewModel n’a plus qu’a s’occuper de son UIState et d’appeler le Repository pour les actions métiers.

#✅ Complétez les tâches suivantes

  • CrĂ©ez un AccountRepository, il doit n’avoir pour responsabilitĂ© que la gestion de l’authentification, de la dĂ©connexion et de la sauvegarde de l’utilisateur connectĂ©.
  • Injectez le AccountRepository dans le AccountViewModel via le constructeur.

#🛟 Aide

  • N’oubliez pas de bien sĂ©parer les responsabilitĂ©s entre le ViewModel et le Repository.
  • Un Repository ne contient pas de coroutineScope, c’est le viewModel qui appelera les fonctions du Repository dans son coroutineScope.
  • Le Repository contiendra une instance de DataStore pour sauvegarder / rĂ©cupĂ©rer les informations de l’utilisateur connectĂ©.
  • Votre viewModel ne saura qu’un utilisateur est connectĂ© que si le DataStore le signale, via le Repository.

Résultats attendus

Vous devriez avoir le même comportement qu’avant, mais avec un code plus propre et plus lisible, respectant le principe de séparation des responsabilités.

Si vous ĂŞtes chaud !

Créez aussi un OrderRepository et un NewsPostRepository ;)