@@ -2,25 +2,27 @@ package com.kickstarter.ui.viewholders
2
2
3
3
import android.content.Intent
4
4
import android.graphics.Typeface
5
+ import android.view.View
5
6
import android.widget.TextView
6
- import com.jakewharton.rxbinding.view.RxView
7
7
import com.kickstarter.R
8
8
import com.kickstarter.databinding.MessageThreadViewBinding
9
9
import com.kickstarter.libs.MessagePreviousScreenType
10
10
import com.kickstarter.libs.rx.transformers.Transformers
11
11
import com.kickstarter.libs.utils.DateTimeUtils
12
- import com.kickstarter.libs.utils.ViewUtils
12
+ import com.kickstarter.libs.utils.extensions.addToDisposable
13
13
import com.kickstarter.libs.utils.extensions.wrapInParentheses
14
14
import com.kickstarter.models.MessageThread
15
15
import com.kickstarter.ui.IntentKey
16
16
import com.kickstarter.ui.activities.MessagesActivity
17
17
import com.kickstarter.ui.extensions.loadCircleImage
18
18
import com.kickstarter.viewmodels.MessageThreadHolderViewModel
19
+ import io.reactivex.disposables.CompositeDisposable
19
20
import org.joda.time.DateTime
20
21
21
22
class MessageThreadViewHolder (private val binding : MessageThreadViewBinding ) : KSViewHolder(binding.root) {
22
23
private val viewModel = MessageThreadHolderViewModel .ViewModel (environment())
23
24
private val ksString = requireNotNull(environment().ksString())
25
+ private val disposables = CompositeDisposable ()
24
26
25
27
@Throws(Exception ::class )
26
28
override fun bindData (data : Any? ) {
@@ -54,49 +56,53 @@ class MessageThreadViewHolder(private val binding: MessageThreadViewBinding) : K
54
56
}
55
57
56
58
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
+ }
61
62
viewModel.outputs.dateDateTime()
62
- .compose(bindToLifecycle())
63
- .compose(Transformers .observeForUI())
63
+ .compose(Transformers .observeForUIV2())
64
64
.subscribe { setDateTextView(it) }
65
+ .addToDisposable(disposables)
65
66
viewModel.outputs.dateTextViewIsBold()
66
- .compose(bindToLifecycle())
67
- .compose(Transformers .observeForUI())
67
+ .compose(Transformers .observeForUIV2())
68
68
.subscribe { setTypeface(binding.messageThreadDateTextView, it) }
69
+ .addToDisposable(disposables)
69
70
viewModel.outputs.messageBodyTextViewText()
70
- .compose(bindToLifecycle())
71
- .compose(Transformers .observeForUI())
71
+ .compose(Transformers .observeForUIV2())
72
72
.subscribe { binding.messageThreadBodyTextView.text = it }
73
+ .addToDisposable(disposables)
73
74
viewModel.outputs.messageBodyTextIsBold()
74
- .compose(bindToLifecycle())
75
- .compose(Transformers .observeForUI())
75
+ .compose(Transformers .observeForUIV2())
76
76
.subscribe { setTypeface(binding.messageThreadBodyTextView, it) }
77
+ .addToDisposable(disposables)
77
78
viewModel.outputs.participantAvatarUrl()
78
- .compose(bindToLifecycle())
79
- .compose(Transformers .observeForUI())
79
+ .compose(Transformers .observeForUIV2())
80
80
.subscribe { setParticipantAvatarImageView(it) }
81
+ .addToDisposable(disposables)
81
82
viewModel.outputs.participantNameTextViewIsBold()
82
- .compose(bindToLifecycle())
83
- .compose(Transformers .observeForUI())
83
+ .compose(Transformers .observeForUIV2())
84
84
.subscribe { setTypeface(binding.participantNameTextView, it) }
85
+ .addToDisposable(disposables)
85
86
viewModel.outputs.participantNameTextViewText()
86
- .compose(bindToLifecycle())
87
- .compose(Transformers .observeForUI())
87
+ .compose(Transformers .observeForUIV2())
88
88
.subscribe { binding.participantNameTextView.text = it }
89
+ .addToDisposable(disposables)
89
90
viewModel.outputs.startMessagesActivity()
90
- .compose(bindToLifecycle())
91
- .compose(Transformers .observeForUI())
91
+ .compose(Transformers .observeForUIV2())
92
92
.subscribe { startMessagesActivity(it) }
93
+ .addToDisposable(disposables)
93
94
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 )
97
98
viewModel.outputs.unreadCountTextViewText()
98
- .compose(bindToLifecycle())
99
- .compose(Transformers .observeForUI())
99
+ .compose(Transformers .observeForUIV2())
100
100
.subscribe { setUnreadCountTextView(it) }
101
+ .addToDisposable(disposables)
102
+ }
103
+
104
+ override fun destroy () {
105
+ disposables.clear()
106
+ super .destroy()
101
107
}
102
108
}
0 commit comments