@@ -2,8 +2,6 @@ package com.example.util.simpletimetracker.feature_change_record.viewModel
22
33import com.example.util.simpletimetracker.core.repo.ResourceRepo
44import com.example.util.simpletimetracker.domain.interactor.RecordActionContinueMediator
5- import com.example.util.simpletimetracker.domain.interactor.RecordActionDuplicateMediator
6- import com.example.util.simpletimetracker.domain.interactor.RecordActionRepeatMediator
75import com.example.util.simpletimetracker.feature_base_adapter.ViewHolderType
86import com.example.util.simpletimetracker.feature_base_adapter.hint.HintViewData
97import com.example.util.simpletimetracker.feature_change_record.R
@@ -12,36 +10,26 @@ import com.example.util.simpletimetracker.feature_change_record.model.ChangeReco
1210import com.example.util.simpletimetracker.navigation.Router
1311import javax.inject.Inject
1412
15- class ChangeRecordActionsAdditionalDelegate @Inject constructor(
13+ class ChangeRecordActionsContinueDelegate @Inject constructor(
1614 private val router : Router ,
1715 private val resourceRepo : ResourceRepo ,
18- private val recordActionDuplicateMediator : RecordActionDuplicateMediator ,
19- private val recordActionRepeatMediator : RecordActionRepeatMediator ,
2016 private val recordActionContinueMediator : RecordActionContinueMediator ,
21- ) {
17+ ): ChangeRecordActionsSubDelegate<ChangeRecordActionsContinueDelegate.Parent> {
2218
2319 private var parent: Parent ? = null
20+ private var viewData: List <ViewHolderType > = emptyList()
2421
25- fun attach (parent : Parent ) {
22+ override fun attach (parent : Parent ) {
2623 this .parent = parent
2724 }
2825
29- fun getContinueViewData (): List <ViewHolderType > {
30- val params = parent?.getViewDataParams()
31- ? : return emptyList()
26+ override fun getViewData (): List <ViewHolderType > {
27+ return viewData
28+ }
3229
33- val result = mutableListOf<ViewHolderType >()
34- result + = HintViewData (
35- text = resourceRepo.getString(R .string.change_record_continue_hint),
36- )
37- result + = ChangeRecordButtonViewData (
38- block = ChangeRecordActionsBlock .ContinueButton ,
39- text = resourceRepo.getString(R .string.change_record_continue),
40- icon = R .drawable.action_continue,
41- iconSizeDp = 24 ,
42- isEnabled = params.isButtonEnabled,
43- )
44- return result
30+ override suspend fun updateViewData () {
31+ viewData = loadContinueViewData()
32+ parent?.update()
4533 }
4634
4735 suspend fun onContinueClickDelegate () {
@@ -69,76 +57,35 @@ class ChangeRecordActionsAdditionalDelegate @Inject constructor(
6957 }
7058 }
7159
72- fun getRepeatViewData (): List <ViewHolderType > {
60+ private fun loadContinueViewData (): List <ViewHolderType > {
7361 val params = parent?.getViewDataParams()
7462 ? : return emptyList()
7563
7664 val result = mutableListOf<ViewHolderType >()
7765 result + = HintViewData (
78- text = resourceRepo.getString(R .string.change_record_repeat_hint ),
66+ text = resourceRepo.getString(R .string.change_record_continue_hint ),
7967 )
8068 result + = ChangeRecordButtonViewData (
81- block = ChangeRecordActionsBlock .RepeatButton ,
82- text = resourceRepo.getString(R .string.change_record_repeat ),
83- icon = R .drawable.repeat ,
69+ block = ChangeRecordActionsBlock .ContinueButton ,
70+ text = resourceRepo.getString(R .string.change_record_continue ),
71+ icon = R .drawable.action_continue ,
8472 iconSizeDp = 24 ,
8573 isEnabled = params.isButtonEnabled,
8674 )
8775 return result
8876 }
8977
90- suspend fun onRepeatClickDelegate () {
91- val params = parent?.getViewDataParams() ? : return
92- recordActionRepeatMediator.execute(
93- typeId = params.newTypeId,
94- comment = params.newComment,
95- tagIds = params.newCategoryIds,
96- )
97- // Exit.
98- parent?.onSaveClickDelegate()
99- }
100-
101- fun getDuplicateViewData (): List <ViewHolderType > {
102- val params = parent?.getViewDataParams()
103- ? : return emptyList()
104-
105- val result = mutableListOf<ViewHolderType >()
106- result + = HintViewData (
107- text = resourceRepo.getString(R .string.change_record_duplicate_hint),
108- )
109- result + = ChangeRecordButtonViewData (
110- block = ChangeRecordActionsBlock .DuplicateButton ,
111- text = resourceRepo.getString(R .string.change_record_duplicate),
112- icon = R .drawable.action_copy,
113- iconSizeDp = 20 ,
114- isEnabled = params.isButtonEnabled,
115- )
116- return result
117- }
118-
119- suspend fun onDuplicateClickDelegate () {
120- val params = parent?.getViewDataParams() ? : return
121- recordActionDuplicateMediator.execute(
122- typeId = params.newTypeId,
123- timeStarted = params.newTimeStarted,
124- timeEnded = params.newTimeEnded,
125- comment = params.newComment,
126- tagIds = params.newCategoryIds,
127- )
128- parent?.onSaveClickDelegate()
129- }
130-
13178 interface Parent {
13279
13380 fun getViewDataParams (): ViewDataParams ?
81+ fun update ()
13482 suspend fun onSaveClickDelegate ()
13583 fun showMessage (stringResId : Int )
13684
13785 data class ViewDataParams (
13886 val recordId : Long ,
13987 val newTypeId : Long ,
14088 val newTimeStarted : Long ,
141- val newTimeEnded : Long ,
14289 val newComment : String ,
14390 val newCategoryIds : List <Long >,
14491 val isButtonEnabled : Boolean ,
0 commit comments