diff --git a/features/feature_change_record/src/main/java/com/example/util/simpletimetracker/feature_change_record/view/ChangeRecordCore.kt b/features/feature_change_record/src/main/java/com/example/util/simpletimetracker/feature_change_record/view/ChangeRecordCore.kt index d6839ce2..a7c06f89 100644 --- a/features/feature_change_record/src/main/java/com/example/util/simpletimetracker/feature_change_record/view/ChangeRecordCore.kt +++ b/features/feature_change_record/src/main/java/com/example/util/simpletimetracker/feature_change_record/view/ChangeRecordCore.kt @@ -25,9 +25,11 @@ import com.example.util.simpletimetracker.feature_change_record.viewData.ChangeR import com.example.util.simpletimetracker.feature_change_record.viewData.ChangeRecordChooserState.State.Closed import com.example.util.simpletimetracker.feature_change_record.viewData.ChangeRecordChooserState.State.Comment import com.example.util.simpletimetracker.feature_change_record.viewData.ChangeRecordChooserState.State.Tag -import com.example.util.simpletimetracker.feature_change_record.viewData.ChangeRecordPreviewChange +import com.example.util.simpletimetracker.feature_change_record.viewData.ChangeRecordPreview +import com.example.util.simpletimetracker.feature_change_record.viewData.ChangeRecordSimpleViewData import com.example.util.simpletimetracker.feature_change_record.viewData.TimeAdjustmentState import com.example.util.simpletimetracker.feature_change_record.viewModel.ChangeRecordBaseViewModel +import com.example.util.simpletimetracker.feature_views.RecordSimpleView import com.example.util.simpletimetracker.feature_views.extension.rotateDown import com.example.util.simpletimetracker.feature_views.extension.rotateUp import com.example.util.simpletimetracker.feature_views.extension.setOnClick @@ -216,23 +218,29 @@ class ChangeRecordCore( } private fun setMergePreview( - data: ChangeRecordPreviewChange, + data: ChangeRecordPreview, binding: ChangeRecordCoreLayoutBinding, - ) = with(binding.containerChangeRecordMergePreview) { - root.isVisible = true - - // TODO refactor - viewChangeRecordPreviewBefore.itemName = data.before.name - viewChangeRecordPreviewBefore.itemTime = data.before.time - viewChangeRecordPreviewBefore.itemDuration = data.before.duration - viewChangeRecordPreviewBefore.itemIcon = data.before.iconId - viewChangeRecordPreviewBefore.itemColor = data.before.color - - viewChangeRecordPreviewAfter.itemName = data.after.name - viewChangeRecordPreviewAfter.itemTime = data.after.time - viewChangeRecordPreviewAfter.itemDuration = data.after.duration - viewChangeRecordPreviewAfter.itemIcon = data.after.iconId - viewChangeRecordPreviewAfter.itemColor = data.after.color + ) = with(binding) { + when (data) { + is ChangeRecordPreview.NotAvailable -> { + containerChangeRecordMerge.isVisible = false + } + is ChangeRecordPreview.Available -> { + containerChangeRecordMerge.isVisible = true + with(containerChangeRecordMergePreview) { + viewChangeRecordPreviewBefore.setData(data.before) + viewChangeRecordPreviewAfter.setData(data.after) + } + } + } + } + + private fun RecordSimpleView.setData(data: ChangeRecordSimpleViewData) { + itemName = data.name + itemTime = data.time + itemDuration = data.duration + itemIcon = data.iconId + itemColor = data.color } private inline fun updateChooser( diff --git a/features/feature_change_record/src/main/java/com/example/util/simpletimetracker/feature_change_record/view/ChangeRecordFragment.kt b/features/feature_change_record/src/main/java/com/example/util/simpletimetracker/feature_change_record/view/ChangeRecordFragment.kt index 23e69fbc..d2178e0f 100644 --- a/features/feature_change_record/src/main/java/com/example/util/simpletimetracker/feature_change_record/view/ChangeRecordFragment.kt +++ b/features/feature_change_record/src/main/java/com/example/util/simpletimetracker/feature_change_record/view/ChangeRecordFragment.kt @@ -148,9 +148,7 @@ class ChangeRecordFragment : } private fun coreSetup() = with(binding) { - // Can merge only untracked time. - layoutChangeRecordCore.containerChangeRecordMerge.isVisible = extra is ChangeRecordParams.Untracked - + // TODO move to view model context?.getString(R.string.change_record_change_adjacent_records) ?.let(layoutChangeRecordCore.tvChangeRecordAdjustHint::setText) } diff --git a/features/feature_change_record/src/main/java/com/example/util/simpletimetracker/feature_change_record/viewData/ChangeRecordPreview.kt b/features/feature_change_record/src/main/java/com/example/util/simpletimetracker/feature_change_record/viewData/ChangeRecordPreview.kt new file mode 100644 index 00000000..a0412f98 --- /dev/null +++ b/features/feature_change_record/src/main/java/com/example/util/simpletimetracker/feature_change_record/viewData/ChangeRecordPreview.kt @@ -0,0 +1,9 @@ +package com.example.util.simpletimetracker.feature_change_record.viewData + +sealed interface ChangeRecordPreview { + object NotAvailable : ChangeRecordPreview + data class Available( + val before: ChangeRecordSimpleViewData, + val after: ChangeRecordSimpleViewData, + ) : ChangeRecordPreview +} \ No newline at end of file diff --git a/features/feature_change_record/src/main/java/com/example/util/simpletimetracker/feature_change_record/viewData/ChangeRecordPreviewChange.kt b/features/feature_change_record/src/main/java/com/example/util/simpletimetracker/feature_change_record/viewData/ChangeRecordPreviewChange.kt deleted file mode 100644 index 3a47ef98..00000000 --- a/features/feature_change_record/src/main/java/com/example/util/simpletimetracker/feature_change_record/viewData/ChangeRecordPreviewChange.kt +++ /dev/null @@ -1,6 +0,0 @@ -package com.example.util.simpletimetracker.feature_change_record.viewData - -data class ChangeRecordPreviewChange( - val before: ChangeRecordSimpleViewData, - val after: ChangeRecordSimpleViewData, -) \ No newline at end of file diff --git a/features/feature_change_record/src/main/java/com/example/util/simpletimetracker/feature_change_record/viewModel/ChangeRecordBaseViewModel.kt b/features/feature_change_record/src/main/java/com/example/util/simpletimetracker/feature_change_record/viewModel/ChangeRecordBaseViewModel.kt index bf665327..52df7668 100644 --- a/features/feature_change_record/src/main/java/com/example/util/simpletimetracker/feature_change_record/viewModel/ChangeRecordBaseViewModel.kt +++ b/features/feature_change_record/src/main/java/com/example/util/simpletimetracker/feature_change_record/viewModel/ChangeRecordBaseViewModel.kt @@ -24,8 +24,6 @@ import com.example.util.simpletimetracker.feature_change_record.R import com.example.util.simpletimetracker.feature_change_record.interactor.ChangeRecordViewDataInteractor import com.example.util.simpletimetracker.feature_change_record.viewData.ChangeRecordChooserState import com.example.util.simpletimetracker.feature_change_record.viewData.ChangeRecordCommentViewData -import com.example.util.simpletimetracker.feature_change_record.viewData.ChangeRecordPreviewChange -import com.example.util.simpletimetracker.feature_change_record.viewData.ChangeRecordSimpleViewData import com.example.util.simpletimetracker.feature_change_record.viewData.TimeAdjustmentState import com.example.util.simpletimetracker.navigation.Router import com.example.util.simpletimetracker.navigation.params.notification.ToastParams @@ -46,7 +44,9 @@ abstract class ChangeRecordBaseViewModel( private val changeRecordViewDataInteractor: ChangeRecordViewDataInteractor, private val addRecordMediator: AddRecordMediator, private val recordInteractor: RecordInteractor, -) : ViewModel() { + private val changeRecordMergeDelegate: ChangeRecordMergeDelegateImpl, +) : ViewModel(), + ChangeRecordMergeDelegate by changeRecordMergeDelegate { val types: LiveData> by lazy { return@lazy MutableLiveData>().let { initial -> @@ -90,7 +90,6 @@ abstract class ChangeRecordBaseViewModel( val saveButtonEnabled: LiveData = MutableLiveData(true) val keyboardVisibility: LiveData = MutableLiveData(false) val comment: LiveData = MutableLiveData() - val mergePreview: LiveData = MutableLiveData() protected var newTypeId: Long = 0 protected var newTimeEnded: Long = 0 @@ -100,8 +99,9 @@ abstract class ChangeRecordBaseViewModel( protected var newCategoryIds: MutableList = mutableListOf() protected var originalTimeStarted: Long = 0 protected var originalTimeEnded: Long = 0 + protected var prevRecord: Record? = null + protected var nextRecord: Record? = null - protected abstract suspend fun initializePreviewViewData() protected abstract suspend fun updatePreview() protected abstract fun getChangeCategoryParams(data: ChangeTagData): ChangeRecordTagFromScreen protected abstract fun onTimeSplitChanged() @@ -111,39 +111,40 @@ abstract class ChangeRecordBaseViewModel( protected abstract suspend fun onSplitClickDelegate() protected abstract suspend fun onAdjustClickDelegate() protected open suspend fun onContinueClickDelegate() {} - protected open suspend fun onMergeClickDelegate() {} - - protected suspend fun adjustPrevRecord(records: List) { - // Find previous record. - val previousRecord = getPrevRecord(records) - // Change it. - previousRecord?.copy( - timeStarted = previousRecord.timeStarted.coerceAtMost(newTimeStarted), - timeEnded = newTimeStarted, - )?.let { - addRecordMediator.add(it) - } + protected abstract val mergeAvailable: Boolean + + protected open suspend fun initializePreviewViewData() { + initializePrevNextRecords() + updateTimeSplitValue() + changeRecordMergeDelegate.updateMergePreviewViewData( + mergeAvailable = mergeAvailable, + prevRecord = prevRecord, + newTimeEnded = newTimeEnded, + ) } - protected suspend fun adjustNextRecord(records: List) { - // Find next record. - val nextRecord = records - .sortedByDescending { it.timeStarted } - .lastOrNull { it.timeStarted >= originalTimeEnded } - // Change it. - nextRecord?.copy( - timeStarted = newTimeEnded, - timeEnded = nextRecord.timeEnded.coerceAtLeast(newTimeEnded) - )?.let { - addRecordMediator.add(it) - } + protected suspend fun adjustPrevRecord() { + prevRecord + ?.let { + it.copy( + timeStarted = it.timeStarted.coerceAtMost(newTimeStarted), + timeEnded = newTimeStarted, + ) + }?.let { + addRecordMediator.add(it) + } } - protected fun getPrevRecord(records: List): Record? { - // TODO get directly from room - return records - .sortedByDescending { it.timeEnded } - .firstOrNull { it.timeEnded <= originalTimeStarted } + protected suspend fun adjustNextRecord() { + nextRecord + ?.let { + it.copy( + timeStarted = newTimeEnded, + timeEnded = it.timeEnded.coerceAtLeast(newTimeEnded) + ) + }?.let { + addRecordMediator.add(it) + } } fun onTypeChooserClick() { @@ -205,7 +206,15 @@ abstract class ChangeRecordBaseViewModel( fun onMergeClick() { onRecordChangeButtonClick( - onProceed = ::onMergeClickDelegate, + onProceed = { + onMergeClickDelegate( + prevRecord = prevRecord, + newTimeEnded = newTimeEnded, + onMergeComplete = { + router.back() + } + ) + }, checkTypeSelected = false, ) } @@ -470,6 +479,17 @@ abstract class ChangeRecordBaseViewModel( } } + private suspend fun initializePrevNextRecords() { + // TODO get directly from room + val records = recordInteractor.getAll() + prevRecord = records + .sortedByDescending { it.timeEnded } + .firstOrNull { it.timeEnded <= originalTimeStarted } + nextRecord = records + .sortedByDescending { it.timeStarted } + .lastOrNull { it.timeStarted >= originalTimeEnded } + } + private suspend fun loadTypesViewData(): List { return recordTypesViewDataInteractor.getTypesViewData() } @@ -497,7 +517,7 @@ abstract class ChangeRecordBaseViewModel( return changeRecordViewDataInteractor.getTimeAdjustmentItems() } - protected suspend fun updateTimeSplitValue() { + private suspend fun updateTimeSplitValue() { val data = loadTimeSplitValue() timeSplitText.set(data) } @@ -515,43 +535,6 @@ abstract class ChangeRecordBaseViewModel( return changeRecordViewDataInteractor.getLastCommentsViewData(newTypeId) } - protected suspend fun updateMergePreviewViewData() { - val data = loadMergePreviewViewData() ?: return - mergePreview.set(data) - } - - private suspend fun loadMergePreviewViewData(): ChangeRecordPreviewChange? { - // TODO refactor - val records = recordInteractor.getAll() - val previousRecord = getPrevRecord(records) ?: return null - val changedRecord = previousRecord.copy( - timeEnded = newTimeEnded, - ) - - val previousRecordPreview = changeRecordViewDataInteractor - .getPreviewViewData(previousRecord) - - val changedRecordPreview = changeRecordViewDataInteractor - .getPreviewViewData(changedRecord) - - return ChangeRecordPreviewChange( - before = ChangeRecordSimpleViewData( - name = previousRecordPreview.name, - time = "${previousRecordPreview.timeStarted} - ${previousRecordPreview.timeFinished}", - duration = previousRecordPreview.duration, - iconId = previousRecordPreview.iconId, - color = previousRecordPreview.color, - ), - after = ChangeRecordSimpleViewData( - name = changedRecordPreview.name, - time = "${changedRecordPreview.timeStarted} - ${changedRecordPreview.timeFinished}", - duration = changedRecordPreview.duration, - iconId = changedRecordPreview.iconId, - color = changedRecordPreview.color, - ), - ) - } - companion object { const val TIME_STARTED_TAG = "time_started_tag" const val TIME_ENDED_TAG = "time_ended_tag" diff --git a/features/feature_change_record/src/main/java/com/example/util/simpletimetracker/feature_change_record/viewModel/ChangeRecordMergeDelegate.kt b/features/feature_change_record/src/main/java/com/example/util/simpletimetracker/feature_change_record/viewModel/ChangeRecordMergeDelegate.kt new file mode 100644 index 00000000..42148974 --- /dev/null +++ b/features/feature_change_record/src/main/java/com/example/util/simpletimetracker/feature_change_record/viewModel/ChangeRecordMergeDelegate.kt @@ -0,0 +1,97 @@ +package com.example.util.simpletimetracker.feature_change_record.viewModel + +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData +import com.example.util.simpletimetracker.core.extension.set +import com.example.util.simpletimetracker.domain.interactor.AddRecordMediator +import com.example.util.simpletimetracker.domain.model.Record +import com.example.util.simpletimetracker.feature_change_record.interactor.ChangeRecordViewDataInteractor +import com.example.util.simpletimetracker.feature_change_record.viewData.ChangeRecordPreview +import com.example.util.simpletimetracker.feature_change_record.viewData.ChangeRecordSimpleViewData +import com.example.util.simpletimetracker.feature_change_record.viewData.ChangeRecordViewData +import javax.inject.Inject + +interface ChangeRecordMergeDelegate { + val mergePreview: LiveData + + suspend fun onMergeClickDelegate( + prevRecord: Record?, + newTimeEnded: Long, + onMergeComplete: () -> Unit, + ) +} + +class ChangeRecordMergeDelegateImpl @Inject constructor( + private val changeRecordViewDataInteractor: ChangeRecordViewDataInteractor, + private val addRecordMediator: AddRecordMediator, +) : ChangeRecordMergeDelegate { + override val mergePreview: LiveData = MutableLiveData() + + override suspend fun onMergeClickDelegate( + prevRecord: Record?, + newTimeEnded: Long, + onMergeComplete: () -> Unit, + ) { + // If merge would be available bot only for untracked - add removal of current record + prevRecord?.copy( + timeEnded = newTimeEnded, + )?.let { + addRecordMediator.add(it) + onMergeComplete() + } + } + + suspend fun updateMergePreviewViewData( + mergeAvailable: Boolean, + prevRecord: Record?, + newTimeEnded: Long, + ) { + prevRecord ?: return + val data = loadMergePreviewViewData( + mergeAvailable = mergeAvailable, + prevRecord = prevRecord, + newTimeEnded = newTimeEnded + ) + mergePreview.set(data) + } + + private fun getChangedRecord( + previousRecord: Record, + newTimeEnded: Long, + ): Record { + return previousRecord.copy( + timeEnded = newTimeEnded, + ) + } + + private suspend fun loadMergePreviewViewData( + mergeAvailable: Boolean, + prevRecord: Record?, + newTimeEnded: Long, + ): ChangeRecordPreview { + if (!mergeAvailable || prevRecord == null) { + return ChangeRecordPreview.NotAvailable + } + + val changedRecord = getChangedRecord(prevRecord, newTimeEnded) + val previousRecordPreview = changeRecordViewDataInteractor + .getPreviewViewData(prevRecord) + val changedRecordPreview = changeRecordViewDataInteractor + .getPreviewViewData(changedRecord) + + return ChangeRecordPreview.Available( + before = map(previousRecordPreview), + after = map(changedRecordPreview), + ) + } + + fun map(preview: ChangeRecordViewData): ChangeRecordSimpleViewData { + return ChangeRecordSimpleViewData( + name = preview.name, + time = "${preview.timeStarted} - ${preview.timeFinished}", + duration = preview.duration, + iconId = preview.iconId, + color = preview.color, + ) + } +} \ No newline at end of file diff --git a/features/feature_change_record/src/main/java/com/example/util/simpletimetracker/feature_change_record/viewModel/ChangeRecordViewModel.kt b/features/feature_change_record/src/main/java/com/example/util/simpletimetracker/feature_change_record/viewModel/ChangeRecordViewModel.kt index 9d0f4450..9565f14f 100644 --- a/features/feature_change_record/src/main/java/com/example/util/simpletimetracker/feature_change_record/viewModel/ChangeRecordViewModel.kt +++ b/features/feature_change_record/src/main/java/com/example/util/simpletimetracker/feature_change_record/viewModel/ChangeRecordViewModel.kt @@ -32,6 +32,7 @@ class ChangeRecordViewModel @Inject constructor( recordTagViewDataInteractor: RecordTagViewDataInteractor, prefsInteractor: PrefsInteractor, resourceRepo: ResourceRepo, + changeRecordMergeDelegate: ChangeRecordMergeDelegateImpl, private val router: Router, private val recordInteractor: RecordInteractor, private val addRecordMediator: AddRecordMediator, @@ -50,10 +51,14 @@ class ChangeRecordViewModel @Inject constructor( changeRecordViewDataInteractor, addRecordMediator, recordInteractor, + changeRecordMergeDelegate, ) { lateinit var extra: ChangeRecordParams + override val mergeAvailable: Boolean + get() = extra is ChangeRecordParams.Untracked + val record: LiveData by lazy { return@lazy MutableLiveData().let { initial -> viewModelScope.launch { @@ -123,23 +128,9 @@ class ChangeRecordViewModel @Inject constructor( router.back() } - override suspend fun onMergeClickDelegate() { - // Find previous record. - val records = recordInteractor.getAll() - val previousRecord = getPrevRecord(records) - // Change it. - previousRecord?.copy( - timeEnded = newTimeEnded, - )?.let { - addRecordMediator.add(it) - router.back() - } - } - override suspend fun onAdjustClickDelegate() { - val records = recordInteractor.getAll() - adjustPrevRecord(records) - adjustNextRecord(records) + adjustPrevRecord() + adjustNextRecord() onSaveClick() } @@ -192,8 +183,7 @@ class ChangeRecordViewModel @Inject constructor( newTimeSplit = newTimeStarted originalTimeStarted = newTimeStarted originalTimeEnded = newTimeEnded - updateTimeSplitValue() - updateMergePreviewViewData() + super.initializePreviewViewData() } private suspend fun loadPreviewViewData(): ChangeRecordViewData { diff --git a/features/feature_change_record/src/main/res/layout/change_record_core_layout.xml b/features/feature_change_record/src/main/res/layout/change_record_core_layout.xml index 30b9c034..fe6ae669 100644 --- a/features/feature_change_record/src/main/res/layout/change_record_core_layout.xml +++ b/features/feature_change_record/src/main/res/layout/change_record_core_layout.xml @@ -563,9 +563,7 @@ layout="@layout/change_record_preview_layout" android:layout_width="match_parent" android:layout_height="wrap_content" - android:visibility="gone" - app:layout_constraintTop_toBottomOf="@id/btnChangeRecordMerge" - tools:visibility="visible" /> + app:layout_constraintTop_toBottomOf="@id/btnChangeRecordMerge" /> diff --git a/features/feature_change_running_record/src/main/java/com/example/util/simpletimetracker/feature_change_running_record/view/ChangeRunningRecordFragment.kt b/features/feature_change_running_record/src/main/java/com/example/util/simpletimetracker/feature_change_running_record/view/ChangeRunningRecordFragment.kt index ce2334c4..09565c67 100644 --- a/features/feature_change_running_record/src/main/java/com/example/util/simpletimetracker/feature_change_running_record/view/ChangeRunningRecordFragment.kt +++ b/features/feature_change_running_record/src/main/java/com/example/util/simpletimetracker/feature_change_running_record/view/ChangeRunningRecordFragment.kt @@ -146,13 +146,12 @@ class ChangeRunningRecordFragment : } private fun coreSetup() = with(binding) { + // TODO move to view model // No time ended in running record. layoutChangeRunningRecordCore.fieldChangeRecordTimeEnded.isVisible = false layoutChangeRunningRecordCore.btnChangeRecordTimeEndedAdjust.isVisible = false // Can't continue running record. layoutChangeRunningRecordCore.containerChangeRecordContinue.isVisible = false - // Can't merge running record. - layoutChangeRunningRecordCore.containerChangeRecordMerge.isVisible = false context?.getString(R.string.change_record_change_prev_record) ?.let(layoutChangeRunningRecordCore.tvChangeRecordAdjustHint::setText) diff --git a/features/feature_change_running_record/src/main/java/com/example/util/simpletimetracker/feature_change_running_record/viewModel/ChangeRunningRecordViewModel.kt b/features/feature_change_running_record/src/main/java/com/example/util/simpletimetracker/feature_change_running_record/viewModel/ChangeRunningRecordViewModel.kt index 4a49364e..f60a505a 100644 --- a/features/feature_change_running_record/src/main/java/com/example/util/simpletimetracker/feature_change_running_record/viewModel/ChangeRunningRecordViewModel.kt +++ b/features/feature_change_running_record/src/main/java/com/example/util/simpletimetracker/feature_change_running_record/viewModel/ChangeRunningRecordViewModel.kt @@ -18,6 +18,7 @@ import com.example.util.simpletimetracker.domain.model.Record import com.example.util.simpletimetracker.domain.model.RunningRecord import com.example.util.simpletimetracker.feature_change_record.interactor.ChangeRecordViewDataInteractor import com.example.util.simpletimetracker.feature_change_record.viewModel.ChangeRecordBaseViewModel +import com.example.util.simpletimetracker.feature_change_record.viewModel.ChangeRecordMergeDelegateImpl import com.example.util.simpletimetracker.feature_change_running_record.R import com.example.util.simpletimetracker.feature_change_running_record.interactor.ChangeRunningRecordViewDataInteractor import com.example.util.simpletimetracker.feature_change_running_record.viewData.ChangeRunningRecordViewData @@ -39,11 +40,12 @@ class ChangeRunningRecordViewModel @Inject constructor( recordTagViewDataInteractor: RecordTagViewDataInteractor, prefsInteractor: PrefsInteractor, changeRecordViewDataInteractor: ChangeRecordViewDataInteractor, + changeRecordMergeDelegate: ChangeRecordMergeDelegateImpl, + recordInteractor: RecordInteractor, private val router: Router, private val addRunningRecordMediator: AddRunningRecordMediator, private val removeRunningRecordMediator: RemoveRunningRecordMediator, private val runningRecordInteractor: RunningRecordInteractor, - private val recordInteractor: RecordInteractor, private val addRecordMediator: AddRecordMediator, private val changeRunningRecordViewDataInteractor: ChangeRunningRecordViewDataInteractor, private val resourceRepo: ResourceRepo, @@ -56,10 +58,13 @@ class ChangeRunningRecordViewModel @Inject constructor( changeRecordViewDataInteractor, addRecordMediator, recordInteractor, + changeRecordMergeDelegate, ) { lateinit var extra: ChangeRunningRecordParams + override val mergeAvailable: Boolean = false + val record: LiveData by lazy { return@lazy MutableLiveData().let { initial -> viewModelScope.launch { @@ -104,8 +109,7 @@ class ChangeRunningRecordViewModel @Inject constructor( } override suspend fun onAdjustClickDelegate() { - val records = recordInteractor.getAll() - adjustPrevRecord(records) + adjustPrevRecord() onSaveClick() } @@ -161,8 +165,7 @@ class ChangeRunningRecordViewModel @Inject constructor( newTimeSplit = newTimeStarted originalTimeStarted = newTimeStarted originalTimeEnded = newTimeEnded - updateTimeSplitValue() - updateMergePreviewViewData() + super.initializePreviewViewData() } } diff --git a/features/feature_views/src/main/res/values/styles.xml b/features/feature_views/src/main/res/values/styles.xml index 56e34683..88efdc8c 100644 --- a/features/feature_views/src/main/res/values/styles.xml +++ b/features/feature_views/src/main/res/values/styles.xml @@ -317,8 +317,8 @@ center_vertical 1 ?appLightTextColor - 8sp - 8sp + 10sp + 10sp 1sp uniform