@@ -2,25 +2,27 @@ package com.kickstarter.ui.viewholders
22
33import android.content.Intent
44import android.graphics.Typeface
5+ import android.view.View
56import android.widget.TextView
6- import com.jakewharton.rxbinding.view.RxView
77import com.kickstarter.R
88import com.kickstarter.databinding.MessageThreadViewBinding
99import com.kickstarter.libs.MessagePreviousScreenType
1010import com.kickstarter.libs.rx.transformers.Transformers
1111import com.kickstarter.libs.utils.DateTimeUtils
12- import com.kickstarter.libs.utils.ViewUtils
12+ import com.kickstarter.libs.utils.extensions.addToDisposable
1313import com.kickstarter.libs.utils.extensions.wrapInParentheses
1414import com.kickstarter.models.MessageThread
1515import com.kickstarter.ui.IntentKey
1616import com.kickstarter.ui.activities.MessagesActivity
1717import com.kickstarter.ui.extensions.loadCircleImage
1818import com.kickstarter.viewmodels.MessageThreadHolderViewModel
19+ import io.reactivex.disposables.CompositeDisposable
1920import org.joda.time.DateTime
2021
2122class MessageThreadViewHolder (private val binding : MessageThreadViewBinding ) : KSViewHolder(binding.root) {
2223 private val viewModel = MessageThreadHolderViewModel .ViewModel (environment())
2324 private val ksString = requireNotNull(environment().ksString())
25+ private val disposables = CompositeDisposable ()
2426
2527 @Throws(Exception ::class )
2628 override fun bindData (data : Any? ) {
@@ -54,49 +56,53 @@ class MessageThreadViewHolder(private val binding: MessageThreadViewBinding) : K
5456 }
5557
5658 init {
57- RxView .clicks(binding.messageThreadContainer)
58- .compose(bindToLifecycle())
59- .compose(Transformers .observeForUI())
60- .subscribe { viewModel.inputs.messageThreadCardViewClicked() }
59+ binding.messageThreadContainer.setOnClickListener {
60+ viewModel.inputs.messageThreadCardViewClicked()
61+ }
6162 viewModel.outputs.dateDateTime()
62- .compose(bindToLifecycle())
63- .compose(Transformers .observeForUI())
63+ .compose(Transformers .observeForUIV2())
6464 .subscribe { setDateTextView(it) }
65+ .addToDisposable(disposables)
6566 viewModel.outputs.dateTextViewIsBold()
66- .compose(bindToLifecycle())
67- .compose(Transformers .observeForUI())
67+ .compose(Transformers .observeForUIV2())
6868 .subscribe { setTypeface(binding.messageThreadDateTextView, it) }
69+ .addToDisposable(disposables)
6970 viewModel.outputs.messageBodyTextViewText()
70- .compose(bindToLifecycle())
71- .compose(Transformers .observeForUI())
71+ .compose(Transformers .observeForUIV2())
7272 .subscribe { binding.messageThreadBodyTextView.text = it }
73+ .addToDisposable(disposables)
7374 viewModel.outputs.messageBodyTextIsBold()
74- .compose(bindToLifecycle())
75- .compose(Transformers .observeForUI())
75+ .compose(Transformers .observeForUIV2())
7676 .subscribe { setTypeface(binding.messageThreadBodyTextView, it) }
77+ .addToDisposable(disposables)
7778 viewModel.outputs.participantAvatarUrl()
78- .compose(bindToLifecycle())
79- .compose(Transformers .observeForUI())
79+ .compose(Transformers .observeForUIV2())
8080 .subscribe { setParticipantAvatarImageView(it) }
81+ .addToDisposable(disposables)
8182 viewModel.outputs.participantNameTextViewIsBold()
82- .compose(bindToLifecycle())
83- .compose(Transformers .observeForUI())
83+ .compose(Transformers .observeForUIV2())
8484 .subscribe { setTypeface(binding.participantNameTextView, it) }
85+ .addToDisposable(disposables)
8586 viewModel.outputs.participantNameTextViewText()
86- .compose(bindToLifecycle())
87- .compose(Transformers .observeForUI())
87+ .compose(Transformers .observeForUIV2())
8888 .subscribe { binding.participantNameTextView.text = it }
89+ .addToDisposable(disposables)
8990 viewModel.outputs.startMessagesActivity()
90- .compose(bindToLifecycle())
91- .compose(Transformers .observeForUI())
91+ .compose(Transformers .observeForUIV2())
9292 .subscribe { startMessagesActivity(it) }
93+ .addToDisposable(disposables)
9394 viewModel.outputs.unreadCountTextViewIsGone()
94- .compose(bindToLifecycle ())
95- .compose( Transformers .observeForUI())
96- .subscribe( ViewUtils .setGone(binding.messageThreadUnreadCountTextView) )
95+ .compose(Transformers .observeForUIV2 ())
96+ .subscribe { binding.messageThreadUnreadCountTextView.visibility = View . GONE }
97+ .addToDisposable(disposables )
9798 viewModel.outputs.unreadCountTextViewText()
98- .compose(bindToLifecycle())
99- .compose(Transformers .observeForUI())
99+ .compose(Transformers .observeForUIV2())
100100 .subscribe { setUnreadCountTextView(it) }
101+ .addToDisposable(disposables)
102+ }
103+
104+ override fun destroy () {
105+ disposables.clear()
106+ super .destroy()
101107 }
102108}
0 commit comments