RepositoryDans cette partie, nous allons mettre en place le pattern Repository pour gérer les informations de l’utilisateur connecté.
Repository permet de séparer la logique métier de la logique de stockage des données.
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.
RepositoryVoilĂ ce que nous allons faire :

Comme vous le voyez, notre
viewModeln’a plus qu’a s’occuper de son UIState et d’appeler leRepositorypour les actions métiers.
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é.AccountRepository dans le AccountViewModel via le constructeur.ViewModel et le Repository.Repository ne contient pas de coroutineScope, c’est le viewModel qui appelera les fonctions du Repository dans son coroutineScope.Repository contiendra une instance de DataStore pour sauvegarder / récupérer les informations de l’utilisateur connecté.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 ;)