Advertisement
Guest User

Untitled

a guest
Jan 15th, 2019
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 1.75 KB | None | 0 0
  1.  private fun getRecommendedContacts() {
  2.         interactor?.let { interactor ->
  3.             compositeDisposable?.add(
  4.                 interactor.getRecommendedContacts()
  5.                     .map { recommendedContacts ->
  6.                         recommendedContacts.map { recommendedContact ->
  7.                             Triple(
  8.                                 interactor.getContactById(recommendedContact.contactId).blockingGet(),
  9.                                 recommendedContact,
  10.                                 getContactLatestConnection(recommendedContact.contactId)
  11.                             )
  12.                         }.filter { !it.first.isBlocked }.associateBy { it.first.id }
  13.                     }.compose(ioToMainSingleScheduler())
  14.                     .doOnSuccess { recommendedContactsMap ->
  15.                         this.recommendedContactsMap = recommendedContactsMap.map{
  16.                             it.key to (it.value.first to it.value.second) }.toMap().toMutableMap()
  17.                         view?.displayRecommendedContacts(recommendedContactsMap.map {
  18.                             it.value.first to it.value.third})
  19.                     }.subscribe())
  20.         }
  21.     }
  22.  
  23.     private fun getContactLatestConnection(contactId: Long): Connection? {
  24.         return interactor?.let {
  25.             getLatestConnection(it.getPhoneNumbers(contactId).blockingGet()) }
  26.         }
  27.  
  28.  
  29.     private fun getLatestConnection(phoneNumbers: List<PhoneNumber>): Connection? {
  30.         val connections = mutableListOf<Connection?>()
  31.         phoneNumbers.forEach { phone ->
  32.             connections.add(interactor?.getLatestConnection(phone.phoneNumber)?.blockingGet())
  33.         }
  34.         connections.sortBy { it?.date }
  35.         return connections.first()
  36.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement