Skip to content

Commit cded992

Browse files
committed
Factorize live data observers
1 parent 97e88b2 commit cded992

File tree

1 file changed

+27
-55
lines changed

1 file changed

+27
-55
lines changed

app/src/main/java/com/klee/sapio/ui/view/EvaluationsActivity.kt

Lines changed: 27 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,16 @@ import android.view.View
1414
import androidx.activity.viewModels
1515
import androidx.annotation.RequiresApi
1616
import androidx.appcompat.app.AppCompatActivity
17+
import androidx.emoji2.widget.EmojiTextView
18+
import androidx.lifecycle.MutableLiveData
1719
import androidx.lifecycle.lifecycleScope
1820
import com.bumptech.glide.Glide
1921
import com.bumptech.glide.load.DataSource
2022
import com.bumptech.glide.load.engine.GlideException
2123
import com.bumptech.glide.request.RequestListener
2224
import com.bumptech.glide.request.target.Target
2325
import com.klee.sapio.R
26+
import com.klee.sapio.data.Evaluation
2427
import com.klee.sapio.data.EvaluationService
2528
import com.klee.sapio.data.Rating
2629
import com.klee.sapio.databinding.ActivityEvaluationsBinding
@@ -60,61 +63,10 @@ class EvaluationsActivity : AppCompatActivity() {
6063
mBinding = ActivityEvaluationsBinding.inflate(layoutInflater)
6164
setContentView(mBinding.root)
6265

63-
mViewModel.microgUserEvaluation.observe(this) {
64-
mBinding.microgUser.text = it?.let {
65-
Rating.create(it.rating).text
66-
} ?: NO_EVALUATION_CHAR
67-
68-
mBinding.microgUser.tooltipText = it?.let {
69-
computeTooltip(it.rating)
70-
}
71-
72-
lifecycleScope.launch {
73-
microgUserReceived.emit(true)
74-
}
75-
}
76-
77-
mViewModel.microgRootEvaluation.observe(this) {
78-
mBinding.microgRoot.text = it?.let {
79-
Rating.create(it.rating).text
80-
} ?: NO_EVALUATION_CHAR
81-
82-
mBinding.microgRoot.tooltipText = it?.let {
83-
computeTooltip(it.rating)
84-
}
85-
86-
lifecycleScope.launch {
87-
microgRootReceived.emit(true)
88-
}
89-
}
90-
91-
mViewModel.bareAospUserEvaluation.observe(this) {
92-
mBinding.bareAospUser.text = it?.let {
93-
Rating.create(it.rating).text
94-
} ?: NO_EVALUATION_CHAR
95-
96-
mBinding.bareAospUser.tooltipText = it?.let {
97-
computeTooltip(it.rating)
98-
}
99-
100-
lifecycleScope.launch {
101-
bareAospUserReceived.emit(true)
102-
}
103-
}
104-
105-
mViewModel.bareAsopRootEvaluation.observe(this) {
106-
mBinding.bareAospRoot.text = it?.let {
107-
Rating.create(it.rating).text
108-
} ?: NO_EVALUATION_CHAR
109-
110-
mBinding.bareAospRoot.tooltipText = it?.let {
111-
computeTooltip(it.rating)
112-
}
113-
114-
lifecycleScope.launch {
115-
bareAospRootReceived.emit(true)
116-
}
117-
}
66+
observeEvaluation(mViewModel.microgUserEvaluation, mBinding.microgUser, microgUserReceived)
67+
observeEvaluation(mViewModel.microgRootEvaluation, mBinding.microgRoot, microgRootReceived)
68+
observeEvaluation(mViewModel.bareAospUserEvaluation, mBinding.bareAospUser, bareAospUserReceived)
69+
observeEvaluation(mViewModel.bareAsopRootEvaluation, mBinding.bareAospRoot, bareAospRootReceived)
11870

11971
mViewModel.iconUrl.observe(this) {
12072
Glide.with(this.applicationContext)
@@ -149,6 +101,26 @@ class EvaluationsActivity : AppCompatActivity() {
149101
}
150102
}
151103

104+
private fun observeEvaluation(
105+
liveData: MutableLiveData<Evaluation>,
106+
textView: EmojiTextView,
107+
flow: MutableSharedFlow<Boolean>
108+
) {
109+
liveData.observe(this) {
110+
textView.text = it?.let {
111+
Rating.create(it.rating).text
112+
} ?: NO_EVALUATION_CHAR
113+
114+
textView.tooltipText = it?.let {
115+
computeTooltip(it.rating)
116+
}
117+
118+
lifecycleScope.launch {
119+
flow.emit(true)
120+
}
121+
}
122+
}
123+
152124
private fun computeTooltip(rating: Int): String {
153125
return when (rating) {
154126
Rating.GOOD -> getString(R.string.good)

0 commit comments

Comments
 (0)