Pessoal, estou escrevendo as novas classes feito na aula em kotlin e depois dessa refatoração de Salvar o Produto, quando salva internamente ele não está trazendo o último id, ficando como 0, daí só atualiza quando eu busco os dados de novo. Poderiam me ajudar?
fun salva(produto: Produto, callback: CallbackDados<Produto>) {
salvaAPI(produto, callback)
}
private fun salvaAPI(produto: Produto, callback: CallbackDados<Produto>) {
produtoService.salva(produto).enqueue(object : Callback<Produto> {
override fun onResponse(call: Call<Produto>, response: Response<Produto>) {
if (response.isSuccessful) {
val produtoSalvo = response.body()!!
salvaInterno(produtoSalvo, callback)
} else {
callback.falha("Falha na resposta")
}
}
override fun onFailure(call: Call<Produto>, t: Throwable) {
callback.falha("Erro: ${t.message}")
}
})
}
private fun salvaInterno(produtoSalvo: Produto, callback: CallbackDados<Produto>) {
BaseAsyncTask({
val id = dao.salva(produtoSalvo)
dao.buscaProduto(id)
}, callback::sucesso)
.execute()
}
interface CallbackDados<T> {
fun sucesso(dados: T)
fun falha(erro: String)
}