Я занимаюсь разработкой проекта в MVP.
В докладчике у меня есть этот метод, который может вызываться многими докладчиками.
private fun getAccessToken(email: String) {
view?.showProgress()
authApi.getAccessToken()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ response ->
view?.hideProgress()
if(response != null) {
localStorage.accessToken = response.accessToken
localStorage.refreshToken = response.refreshToken
localStorage.expireIn = response.expireIn
//CODE WHICH GOES HERE DIFFER IN EACH ACTIVITY
} else {
handleError(response)
}
}, {
view?.hideProgress()
handleError(it)
}).also {}
}
В настоящее время я копирую этот метод для каждого действия / фрагмента / докладчика, для которого он требуется.Не понимаю, что это вонючий код.
Как извлечь эту функцию в класс BaseActivity / BaseFragment, чтобы объявление функции всегда находилось в одном месте?
Как я также могу передать следующую функцию методу, чтобы после завершения функции вызывалась следующая функция?
Я пользуюсь Kotlin.Есть такие понятия, как функция расширения, и можно ли что-то подобное использовать здесь.