Skip to content

Commit 61de364

Browse files
committedJul 28, 2017
Implement zipping of requests
1 parent 388cc18 commit 61de364

File tree

1 file changed

+27
-5
lines changed

1 file changed

+27
-5
lines changed
 
Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
package com.example.tamaskozmer.kotlinrxexample.model
22

3+
import com.example.tamaskozmer.kotlinrxexample.model.entities.AnswerListModel
4+
import com.example.tamaskozmer.kotlinrxexample.model.entities.AnswerViewModel
35
import com.example.tamaskozmer.kotlinrxexample.model.entities.DetailsModel
6+
import com.example.tamaskozmer.kotlinrxexample.model.entities.QuestionListModel
47
import com.example.tamaskozmer.kotlinrxexample.model.services.UserService
58
import io.reactivex.Single
9+
import io.reactivex.functions.Function3
610

711
/**
812
* Created by Tamas_Kozmer on 7/4/2017.
@@ -13,10 +17,28 @@ class UserRepository(
1317
fun getUsers(page: Int) = userService.getUsers(page)
1418

1519
fun getDetails(userId: Long) : Single<DetailsModel> {
16-
// TODO
17-
return Single.create { emitter ->
18-
val detailsModel = DetailsModel(emptyList(), emptyList(), emptyList())
19-
emitter.onSuccess(detailsModel)
20-
}
20+
return Single.zip(
21+
userService.getQuestionsByUser(userId),
22+
userService.getAnswersByUser(userId),
23+
userService.getFavoritesByUser(userId),
24+
Function3<QuestionListModel, AnswerListModel, QuestionListModel, DetailsModel>
25+
{ questions, answers, favorites ->
26+
createDetailsModel(questions, answers, favorites) })
27+
}
28+
29+
private fun createDetailsModel(questionsModel: QuestionListModel, answersModel: AnswerListModel,
30+
favoritesModel: QuestionListModel): DetailsModel {
31+
val questions = questionsModel.items
32+
.take(3)
33+
34+
val favorites = favoritesModel.items
35+
.take(3)
36+
37+
val answers = answersModel.items
38+
.filter { it.accepted }
39+
.take(3)
40+
.map { AnswerViewModel(it.answerId, it.score, it.accepted, "TODO") }
41+
42+
return DetailsModel(questions, answers, favorites)
2143
}
2244
}

0 commit comments

Comments
 (0)
Please sign in to comment.