Функция извлечения (которая повторяется во многих действиях / фрагментах), чтобы ее можно было повторно использовать - PullRequest
0 голосов
/ 22 июня 2019

Я занимаюсь разработкой проекта в 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.Есть такие понятия, как функция расширения, и можно ли что-то подобное использовать здесь.

...