Application pour afficher une liste de posts et les détails de chaque post.
- Afficher une liste de posts
- Afficher les détails d'un post
- Système d'état pour les requêtes (loading, error, success)
L'application suit l'architecture MVVM. Les différentes couches sont les suivantes :
- Model : Contient les classes de données et les repositories
- View : Interface utilisateur sous forme de fonctions composables
- ViewModel : Gère les données et la logique métier liée à l'interface utilisateur
Le model comprend l'ensemble des classes de données (Post par exemple) et les repositories.
Par exemple, le repository PostRemoteRepository utilise le service ApiService pour récupérer les données.
Il étend la classe PostRepository qui définit les différentes méthodes de récupération des données.
La view est composée des fonctions composables qui affichent l'interface utilisateur.
Par exemple, PostListScreen affiche une liste des posts en utilisant le composable PostItem.
Il appelle le viewmodel PostViewModel qui s'occupe de faire les appelles au repository et de mettre à jour l'état uiState qui gère l'affichage
Le ViewModel gère les données liées à l'interface utilisateur. Il traite aussi de la logique métier
Par exemple, PostDetailViewModelgère l'appel de l'API par la méthode fetchPostById et met à jour l'état uiState en fonction du résultat de la requête.
Le code est divisé en plusieurs packages :
data/: Contient les repositories et les classes de service. Dans notre cas, liés à l'APIdomain/: Contient les models de nos données. Ici, il s'agit de notre Post, et des classes d'état utilisées pour les requêtespresentation/: Contient la couche de présenation incluant les composants, les écrans d'affichage (screens) et leurs viewmodels
Des tests unitaires sont aussi présent dans le dossier test/ concernant le viewmodel PostDetailViewModel