Skip to content

Commit bf63a11

Browse files
committed
fix typing comment jumping
1 parent 433942e commit bf63a11

File tree

3 files changed

+28
-12
lines changed

3 files changed

+28
-12
lines changed

features/feature_change_record/src/main/java/com/example/util/simpletimetracker/feature_change_record/adapter/ChangeRecordCommentFieldAdapterDelegate.kt

+4-2
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@ fun createChangeRecordCommentFieldAdapterDelegate(
2121
with(binding) {
2222
item as ViewData
2323

24-
if (item.text != etChangeRecordCommentField.text.toString()) {
24+
if (item.text != null &&
25+
item.text != etChangeRecordCommentField.text.toString()
26+
) {
2527
etChangeRecordCommentField.setText(item.text)
2628
etChangeRecordCommentField.setSelection(item.text.length)
2729
}
@@ -38,7 +40,7 @@ fun createChangeRecordCommentFieldAdapterDelegate(
3840

3941
data class ChangeRecordCommentFieldViewData(
4042
val id: Long,
41-
val text: String,
43+
val text: String?,
4244
@ColorInt val iconColor: Int,
4345
) : ViewHolderType {
4446

features/feature_change_record/src/main/java/com/example/util/simpletimetracker/feature_change_record/interactor/ChangeRecordViewDataInteractor.kt

+7-4
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@ import com.example.util.simpletimetracker.core.view.timeAdjustment.TimeAdjustmen
77
import com.example.util.simpletimetracker.domain.favourite.interactor.FavouriteCommentInteractor
88
import com.example.util.simpletimetracker.domain.prefs.interactor.PrefsInteractor
99
import com.example.util.simpletimetracker.domain.record.interactor.RecordInteractor
10-
import com.example.util.simpletimetracker.domain.recordTag.interactor.RecordTagInteractor
11-
import com.example.util.simpletimetracker.domain.recordType.interactor.RecordTypeInteractor
1210
import com.example.util.simpletimetracker.domain.record.interactor.RunningRecordInteractor
1311
import com.example.util.simpletimetracker.domain.record.model.Record
12+
import com.example.util.simpletimetracker.domain.recordTag.interactor.RecordTagInteractor
13+
import com.example.util.simpletimetracker.domain.recordType.interactor.RecordTypeInteractor
1414
import com.example.util.simpletimetracker.feature_base_adapter.ViewHolderType
1515
import com.example.util.simpletimetracker.feature_base_adapter.hint.HintViewData
1616
import com.example.util.simpletimetracker.feature_change_record.R
@@ -63,6 +63,7 @@ class ChangeRecordViewDataInteractor @Inject constructor(
6363
suspend fun getCommentsViewData(
6464
comment: String,
6565
typeId: Long,
66+
fromCommentChange: Boolean,
6667
): List<ViewHolderType> {
6768
data class Data(val timeStarted: Long, val comment: String)
6869

@@ -71,8 +72,10 @@ class ChangeRecordViewDataInteractor @Inject constructor(
7172
val isFavourite = favouriteCommentInteractor.get(comment) != null
7273

7374
ChangeRecordCommentFieldViewData(
74-
id = 1L, // Only one at the time.
75-
text = comment,
75+
// Only one at the time.
76+
id = 1L,
77+
// Do not update text if update coming from typing.
78+
text = if (fromCommentChange) null else comment,
7679
iconColor = if (isFavourite) {
7780
resourceRepo.getColor(R.color.colorSecondary)
7881
} else {

features/feature_change_record/src/main/java/com/example/util/simpletimetracker/feature_change_record/viewModel/ChangeRecordBaseViewModel.kt

+17-6
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ abstract class ChangeRecordBaseViewModel(
8080
return@lazy MutableLiveData<List<ViewHolderType>>().let { initial ->
8181
viewModelScope.launch {
8282
initializePreviewViewData()
83-
initial.value = loadCommentsViewData()
83+
initial.value = loadCommentsViewData(fromCommentChange = false)
8484
}
8585
initial
8686
}
@@ -338,15 +338,21 @@ abstract class ChangeRecordBaseViewModel(
338338
}
339339

340340
fun onCommentClick(item: ChangeRecordCommentViewData) {
341-
onCommentChange(item.text)
341+
viewModelScope.launch {
342+
if (item.text != newComment) {
343+
newComment = item.text
344+
updatePreview()
345+
updateCommentsViewData()
346+
}
347+
}
342348
}
343349

344350
fun onCommentChange(comment: String) {
345351
viewModelScope.launch {
346352
if (comment != newComment) {
347353
newComment = comment
348354
updatePreview()
349-
updateCommentsViewData()
355+
updateCommentsViewData(fromCommentChange = true)
350356
}
351357
}
352358
}
@@ -845,17 +851,22 @@ abstract class ChangeRecordBaseViewModel(
845851
)
846852
}
847853

848-
private fun updateCommentsViewData() {
854+
private fun updateCommentsViewData(
855+
fromCommentChange: Boolean = false,
856+
) {
849857
searchLoadJob?.cancel()
850858
searchLoadJob = viewModelScope.launch {
851-
comments.set(loadCommentsViewData())
859+
comments.set(loadCommentsViewData(fromCommentChange))
852860
}
853861
}
854862

855-
private suspend fun loadCommentsViewData(): List<ViewHolderType> {
863+
private suspend fun loadCommentsViewData(
864+
fromCommentChange: Boolean,
865+
): List<ViewHolderType> {
856866
return changeRecordViewDataInteractor.getCommentsViewData(
857867
comment = newComment,
858868
typeId = newTypeId,
869+
fromCommentChange = fromCommentChange,
859870
)
860871
}
861872

0 commit comments

Comments
 (0)