Skip to content

Commit 388cc18

Browse files
committedJul 28, 2017
Starter project
1 parent a5551e7 commit 388cc18

File tree

3 files changed

+8
-55
lines changed

3 files changed

+8
-55
lines changed
 

‎app/src/main/java/com/example/tamaskozmer/kotlinrxexample/di/modules/ApplicationModule.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package com.example.tamaskozmer.kotlinrxexample.di.modules
22

33
import com.example.tamaskozmer.kotlinrxexample.CustomApplication
44
import com.example.tamaskozmer.kotlinrxexample.model.UserRepository
5-
import com.example.tamaskozmer.kotlinrxexample.model.services.QuestionService
65
import com.example.tamaskozmer.kotlinrxexample.model.services.UserService
76
import com.google.gson.Gson
87
import dagger.Module
@@ -31,6 +30,5 @@ class ApplicationModule(val application: CustomApplication) {
3130
@Singleton
3231
fun provideUserRepository(retrofit: Retrofit) =
3332
UserRepository(
34-
retrofit.create(UserService::class.java),
35-
retrofit.create(QuestionService::class.java))
33+
retrofit.create(UserService::class.java))
3634
}
Lines changed: 6 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,67 +1,22 @@
11
package com.example.tamaskozmer.kotlinrxexample.model
22

3-
import com.example.tamaskozmer.kotlinrxexample.model.entities.*
4-
import com.example.tamaskozmer.kotlinrxexample.model.services.QuestionService
3+
import com.example.tamaskozmer.kotlinrxexample.model.entities.DetailsModel
54
import com.example.tamaskozmer.kotlinrxexample.model.services.UserService
65
import io.reactivex.Single
7-
import io.reactivex.functions.Function3
86

97
/**
108
* Created by Tamas_Kozmer on 7/4/2017.
119
*/
1210
class UserRepository(
13-
private val userService: UserService,
14-
private val questionService: QuestionService) {
11+
private val userService: UserService) {
1512

1613
fun getUsers(page: Int) = userService.getUsers(page)
1714

1815
fun getDetails(userId: Long) : Single<DetailsModel> {
19-
return Single.zip(
20-
userService.getQuestionsByUser(userId),
21-
getTitlesForAnswers(userId),
22-
userService.getFavoritesByUser(userId),
23-
Function3<QuestionListModel, List<AnswerViewModel>, QuestionListModel, DetailsModel>
24-
{ questions, answers, favorites ->
25-
createDetailsModel(questions, answers, favorites) })
26-
}
27-
28-
private fun getTitlesForAnswers(userId: Long) : Single<List<AnswerViewModel>> {
29-
return userService.getAnswersByUser(userId)
30-
.flatMap { answerListModel: AnswerListModel? ->
31-
mapAnswersToAnswersWithTitle(answerListModel?.items ?: emptyList()) }
32-
}
33-
34-
private fun mapAnswersToAnswersWithTitle(answers: List<Answer>): Single<List<AnswerViewModel>> {
35-
val processedAnswers = answers
36-
.filter { it.accepted }
37-
.take(3)
38-
39-
val ids = processedAnswers
40-
.map { it.questionId.toString() }
41-
.joinToString(separator = ";")
42-
43-
val questionsListModel = questionService.getQuestionById(ids)
44-
45-
return questionsListModel
46-
.flatMap { questionListModel: QuestionListModel? -> Single.just(questionListModel?.items) }
47-
.map { questions: List<Question>? -> addTitlesToAnswers(processedAnswers, questions?: emptyList()) }
48-
}
49-
50-
private fun addTitlesToAnswers(answers: List<Answer>, questions: List<Question>) : List<AnswerViewModel> {
51-
return answers.map { (answerId, questionId, score, accepted) ->
52-
val question = questions.find { it.questionId == questionId }
53-
AnswerViewModel(answerId, score, accepted, question?.title ?: "Unknown")
16+
// TODO
17+
return Single.create { emitter ->
18+
val detailsModel = DetailsModel(emptyList(), emptyList(), emptyList())
19+
emitter.onSuccess(detailsModel)
5420
}
5521
}
56-
57-
private fun createDetailsModel(questionsModel: QuestionListModel?, answers: List<AnswerViewModel>,
58-
favoritesModel: QuestionListModel?): DetailsModel {
59-
val questions = (questionsModel?.items ?: emptyList())
60-
.take(3)
61-
62-
val favorites = (favoritesModel?.items ?: emptyList())
63-
.take(3)
64-
65-
return DetailsModel(questions, answers, favorites)
66-
}
6722
}

‎build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ buildscript {
77
jcenter()
88
}
99
dependencies {
10-
classpath 'com.android.tools.build:gradle:3.0.0-alpha5'
10+
classpath 'com.android.tools.build:gradle:3.0.0-alpha8'
1111
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
1212

1313
// NOTE: Do not place your application dependencies here; they belong

0 commit comments

Comments
 (0)
Please sign in to comment.