Я разрабатываю экран входа в свое приложение для Android с чистой архитектурой.
При успешном использовании логина мне необходимо сохранить токен в общих настройках.
И на заставке мне нужно проверить, вошел ли пользователь в систему или нет
Итак, мой вопрос в том, где идеальное место:
- Для сохранения токена
сохранить маркер в LoginUseCase (доменный слой)
class LoginUseCase(private val userRepository: UserRepository, private val schedulerProvider: SchedulerProvider) {
fun execute(username: String, password: String): Single<Token> {
return userRepository.login(username, password)
.andThen(userRepository.saveToken(.....)
.subscribeOn(schedulerProvider.getIOScheduler())
.observeOn(schedulerProvider.getUIScheduler())
}
}
Или я должен создать токен сохранения в качестве UseCase и сохранить токен в слое презентатора
class LoginPresenter(private val view: LoginContract.View,
private val setLoginStateUseCase: SetLoginStateUseCase,
private val loginUseCase: LoginUseCase,
private val schedulerProvider: SchedulerProvider): LoginContract.Presenter {
private val compositeDisposable = CompositeDisposable()
override fun performLogin(username: String, password: String) {
if (username.isNullOrEmpty() || password.isNullOrEmpty()) {
view.onShowLoginError("Field should not be empty")
} else {
view.showLoading()
val disposable = loginUseCase.execute(username, password)
.subscribeOn(schedulerProvider.getIOScheduler())
.observeOn(schedulerProvider.getUIScheduler())
.andThen(setLoginStateUseCase.execute())
.subscribe({
view.hideLoading()
view.onLoginSuccess()
}, {error ->
view.hideLoading()
view.onShowLoginError(error.localizedMessage)
})
compositeDisposable.add(disposable)
}
}
Тот же вопрос с проверкой пользователя вошел или нет. Должен ли я сделать это действие вариантом использования?