Запросы github api, не совсем верно работает алгорим
Всем привет! Проблема такова: при отправке запроса на github api алгоритм стабильно пропускает данные из массива. Имеется массив данных из 30 записей информации о пользователе. С уникальными значениями id, login и т.д. При отправке 30ти запросов, положительные получаю от 23 до 26-28. Всегда по разному. Подскажите чего я не вижу? Почему не получается получить 30 ответов?
Запрос первых 30ти пользователей:
@GET("users")
@Headers("Authorization: token ***")
fun getAllUser(
@Query("since") since: Int = 0
): Call<ArrayList<User>>
Запрос детальной информации о пользователе:
@GET("users/{username}")
@Headers("Authorization: token ***")
fun getUserDetail(
@Path("username") username: String,
): Call<DetailUserResponce>
Вьюмодель:
fun setUserDetail(username: String) {
RetrofitClient.apiInstance
.getUserDetail(username)
.enqueue(object : Callback<DetailUserResponce>{
override fun onResponse(
call: Call<DetailUserResponce>,
response: Response<DetailUserResponce>
) {
if (response.isSuccessful) {
user.postValue(response.body())
}
}
override fun onFailure(call: Call<DetailUserResponce>, t: Throwable) {
Log.d("MyTag", t.message.toString())
}
})
}
fun getUserDetail(): MutableLiveData<DetailUserResponce> {
return user
}
private fun setAllUsers() {
RetrofitClient.apiInstance
.getAllUser()
.enqueue(object : Callback<ArrayList<User>>{
override fun onResponse(
call: Call<ArrayList<User>>,
response: Response<ArrayList<User>>
) {
if (response.isSuccessful) {
listUsers.postValue(response.body())
}
}
override fun onFailure(call: Call<ArrayList<User>>, t: Throwable) {
Log.d("MyTag", t.message.toString())
}
})
}
fun getSearchUsers(): LiveData<ArrayList<User>>{
return listUsers
}
Модели данных:
data class User(
val login: String,
val id: Int,
val avatar_url: String,
var followers: Int,
): java.io.Serializable
data class DetailUserResponce (
val id: Int,
val avatar_url: String,
val repos_url: String,
val name: String,
val bio: String,
val public_repos: Int,
val followers: Int,
val following: Int,
)
Алгоритм:
viewModel.getSearchUsers().observe(viewLifecycleOwner) {
if (it != null) {
for(user in it) {
vieModelD.setUserDetail(user.login)
vieModelD.getUserDetail().observe(viewLifecycleOwner) { userResponce ->
if (user.id == userResponce.id) {
user.followers = userResponce.followers
adapter.setData(it)
}
}
}
}
}