Я прочитал это руководство: https://developer.android.com/jetpack/docs/guide
и попробуйте использовать шаблон репозитория в этом случае:
приложение через Retrofit lib делает запрос GET к серверу /get/user
, и ответ от сервера может быть таким (со статусом 200):
{
"user": {"name" : "Jack", "id": "99"},
"status": true
}
или как это (со статусом 200):
{ "status": false, "message": "Some error here"}
или ошибка 500, например.
Мой UserFragment
должен отображать диалоговое окно, зависящее от ответа сервера: если все в порядке - нормально сообщение, если статус false - сообщение об ошибке из ответа API, если 500 - другое сообщение об ошибке.
Моя модель POJO выглядит так:
public class User {
private String id;
private String name;
// getters and setters omitted
}
public class ApiResponse {
private User user;
private Boolean status;
private String message;
// getters and setters omitted
}
Как мне с этим справиться в репозитории?
- Должен ли мой объект репозитория возвращать пользователя в ViewModel? Если да - как моя ViewModel узнала о статусе и полях сообщения ответа API?
- Или мой объект хранилища должен возвращать напрямую ApiResponse ViewModel, и ViewModel получает от него статус, сообщение и пользователя и передает их Fragment? Но что, если я хочу кешировать пользователя в базу данных? Нужно ли хранить все ApiResponse в базе данных или нам нужен только пользователь Store?
- Или что-то еще ...?
Я предпочитаю 1, потому что для меня это более понятно, но моя проблема - как обращаться с полями статуса и сообщения, возвращенными с сервера и необходимыми для отображения данных во фрагменте.