Вход в поток в Android Чистая архитектура
Я пытался реализовать простое приложение для Android с аутентификацией Firebase, используя чистую архитектуру, чтобы в соответствии с документацией Firebase пользователь мог проверить, вошел ли он в систему.
@Override
public void onStart() {
super.onStart();
// Check if user is signed in (non-null) and update UI accordingly.
FirebaseUser currentUser = mAuth.getCurrentUser();
updateUI(currentUser);
}
так что я не понимаю, куда следует поместить это условие, должно ли оно быть в UseCase или в Presenter, вызываемых независимо с помощью одного и того же исходного объекта.
что-то вроде
public interface FirebaseAuthDataSource {
Single<User> loginUser(String username, String password);
Single<User> isUserLoggedIn();
}
public class LoginUserUseCase {
public Observable<ResponseValues> buildUseCase(RequestValues requestValues) {
return firebaseAuthDataSource.loginUser(username,password);
}
}
public class LoginPresenter{
public void onStart(){
firebaseAuthDataSource.isUserLoggedIn()
.subscribe(LoginView::navigateToMenuScreen);
}
}
Итак, условия, подобные этим, соответствуют ли они бизнес-логике? или логика потока?
2 ответа
По словам дяди Боба, пользовательский интерфейс не должен ничего знать о базе данных. Эти условия относятся к слою фреймворка, где должны быть все ваши базы данных. И связь проходит через UseCase и интерфейс доступа к данным.
Если это слишком много для вас, то вы также можете просто перенести чувствительные части, которые, вероятно, будут изменены в будущем, на "Чистую архитектуру". Но это только мое мнение. Я надеюсь, что это поможет вам
В Чистой Архитектуре вы вкладываете как можно больше логики в слой вариантов использования - интеракторы. Доступ к таким деталям, как база данных, абстрагируется с помощью интерфейса, определенного на уровне прецедента и реализованного на уровне адаптера платформы / интерфейса. докладчики должны быть как можно более простыми - в идеале только "преобразователи данных".
В случае, если интеракторы решат, когда выполнить проверку входа в систему и выполнить ее, используя интерфейс с базой данных Firebase. Интеракторы также решат, что произойдет, если проверка входа не удалась.
Если вы хотите узнать больше о реализации докладчиков, взгляните на мой пост: https://plainionist.github.io/Implementing-Clean-Architecture-Controller-Presenter/