Запустите метод сразу после того, как метод наблюдения LiveData - PullRequest
0 голосов
/ 14 февраля 2019

Мне нужно запустить метод сразу после завершения выполнения метода, но я не знаю как.это мой код ниже:

class TokenAuthenticator(private val userName :String, private val userDao: UserDao, private val service : AuthenticateService) : Authenticator {



    override fun authenticate(route: Route?, response: Response): Request? {
//        userViewModel = ViewModelProviders.of(activity).get(UserViewModel::class.java)
        var userForSave: User? = null
        if(responseCount(response) >= 2) {
            return null
        }
        userDao.getAll().observe(this, Observer {users ->
            users?.let{
                userForSave = users.find{x:User -> x.userName == userName}!!
                val tokenDto: TokenDto = TokenDto(token = userForSave!!.token, refreshToken = userForSave!!.refreshToken)
                val refreshTokenCall = service.refreshToken(tokenDto)
                val refreshResponse = refreshTokenCall.execute()
                if(refreshResponse.isSuccessful) {
                    userForSave!!.token = refreshResponse!!.body()!!.token
                    userForSave!!.refreshToken = refreshResponse!!.body()!!.refreshToken
                    userDao.update(userForSave!!)
//                    return response.request()
//                        .newBuilder()
//                        .header("Authorization", "Bearer ${userForSave!!.token}")
//                        .build()
                }
            }
        }) // need a method here like "Then()" to create request object

        return null
    }
    private fun responseCount(response: Response) : Int {
        var count = 1
        var res = response.priorResponse()
        while(res != null) {
            count++
            res = res.priorResponse()
        }
        return count
    }
}

Текущий код возвращает ноль до создания запроса.А также не могу использовать возврат

...