1
+ package com.example.util.simpletimetracker.feature_change_record.mapper
2
+
3
+ import com.example.util.simpletimetracker.feature_change_record.viewModel.ChangeRecordActionsAdjustDelegate
4
+ import com.example.util.simpletimetracker.feature_change_record.viewModel.ChangeRecordActionsContinueDelegate
5
+ import com.example.util.simpletimetracker.feature_change_record.viewModel.ChangeRecordActionsDelegate
6
+ import com.example.util.simpletimetracker.feature_change_record.viewModel.ChangeRecordActionsDelegate.Parent.ViewDataParams
7
+ import com.example.util.simpletimetracker.feature_change_record.viewModel.ChangeRecordActionsDuplicateDelegate
8
+ import com.example.util.simpletimetracker.feature_change_record.viewModel.ChangeRecordActionsMergeDelegate
9
+ import com.example.util.simpletimetracker.feature_change_record.viewModel.ChangeRecordActionsRepeatDelegate
10
+ import com.example.util.simpletimetracker.feature_change_record.viewModel.ChangeRecordActionsSplitDelegate
11
+ import javax.inject.Inject
12
+
13
+ class ChangeRecordActionsDelegateMapper @Inject constructor() {
14
+
15
+ fun getSplitDelegateParent (
16
+ parent : ChangeRecordActionsDelegate .Parent ? ,
17
+ updateViewData : () -> Unit ,
18
+ ): ChangeRecordActionsSplitDelegate .Parent {
19
+ return object : ChangeRecordActionsSplitDelegate .Parent {
20
+ override fun getViewDataParams (): ChangeRecordActionsSplitDelegate .Parent .ViewDataParams ? {
21
+ return parent?.getViewDataParams()?.mapSplitParams()
22
+ }
23
+
24
+ override fun update () {
25
+ updateViewData()
26
+ }
27
+
28
+ override suspend fun onSplitComplete () {
29
+ parent?.onSplitComplete()
30
+ }
31
+ }
32
+ }
33
+
34
+ fun getAdjustDelegateParent (
35
+ parent : ChangeRecordActionsDelegate .Parent ? ,
36
+ updateViewData : () -> Unit ,
37
+ ): ChangeRecordActionsAdjustDelegate .Parent {
38
+ return object : ChangeRecordActionsAdjustDelegate .Parent {
39
+ override fun getViewDataParams (): ChangeRecordActionsAdjustDelegate .Parent .ViewDataParams ? {
40
+ return parent?.getViewDataParams()?.mapAdjustParams()
41
+ }
42
+
43
+ override fun update () {
44
+ updateViewData()
45
+ }
46
+
47
+ override suspend fun onAdjustComplete () {
48
+ parent?.onSaveClickDelegate()
49
+ }
50
+ }
51
+ }
52
+
53
+ fun getContinueActionsDelegateParent (
54
+ parent : ChangeRecordActionsDelegate .Parent ? ,
55
+ updateViewData : () -> Unit ,
56
+ ): ChangeRecordActionsContinueDelegate .Parent {
57
+ return object : ChangeRecordActionsContinueDelegate .Parent {
58
+ override fun getViewDataParams (): ChangeRecordActionsContinueDelegate .Parent .ViewDataParams ? {
59
+ return parent?.getViewDataParams()?.mapContinueParams()
60
+ }
61
+
62
+ override fun update () {
63
+ updateViewData()
64
+ }
65
+
66
+ override suspend fun onSaveClickDelegate () {
67
+ parent?.onSaveClickDelegate()
68
+ }
69
+
70
+ override fun showMessage (stringResId : Int ) {
71
+ parent?.showMessage(stringResId)
72
+ }
73
+ }
74
+ }
75
+
76
+ fun getRepeatActionsDelegateParent (
77
+ parent : ChangeRecordActionsDelegate .Parent ? ,
78
+ updateViewData : () -> Unit ,
79
+ ): ChangeRecordActionsRepeatDelegate .Parent {
80
+ return object : ChangeRecordActionsRepeatDelegate .Parent {
81
+ override fun getViewDataParams (): ChangeRecordActionsRepeatDelegate .Parent .ViewDataParams ? {
82
+ return parent?.getViewDataParams()?.mapRepeatParams()
83
+ }
84
+
85
+ override fun update () {
86
+ updateViewData()
87
+ }
88
+
89
+ override suspend fun onSaveClickDelegate () {
90
+ parent?.onSaveClickDelegate()
91
+ }
92
+ }
93
+ }
94
+
95
+ fun getDuplicateActionsDelegateParent (
96
+ parent : ChangeRecordActionsDelegate .Parent ? ,
97
+ updateViewData : () -> Unit ,
98
+ ): ChangeRecordActionsDuplicateDelegate .Parent {
99
+ return object : ChangeRecordActionsDuplicateDelegate .Parent {
100
+ override fun getViewDataParams (): ChangeRecordActionsDuplicateDelegate .Parent .ViewDataParams ? {
101
+ return parent?.getViewDataParams()?.mapDuplicateParams()
102
+ }
103
+
104
+ override fun update () {
105
+ updateViewData()
106
+ }
107
+
108
+ override suspend fun onSaveClickDelegate () {
109
+ parent?.onSaveClickDelegate()
110
+ }
111
+ }
112
+ }
113
+
114
+ fun getMergeDelegateParent (
115
+ parent : ChangeRecordActionsDelegate .Parent ? ,
116
+ updateViewData : () -> Unit ,
117
+ ): ChangeRecordActionsMergeDelegate .Parent {
118
+ return object : ChangeRecordActionsMergeDelegate .Parent {
119
+ override fun getViewDataParams (): ChangeRecordActionsMergeDelegate .Parent .ViewDataParams ? {
120
+ return parent?.getViewDataParams()?.mapMergeParams()
121
+ }
122
+
123
+ override fun update () {
124
+ updateViewData()
125
+ }
126
+ }
127
+ }
128
+
129
+ private fun ViewDataParams.mapSplitParams (): ChangeRecordActionsSplitDelegate .Parent .ViewDataParams {
130
+ return ChangeRecordActionsSplitDelegate .Parent .ViewDataParams (
131
+ newTimeSplit = splitParams.newTimeSplit,
132
+ newTypeId = baseParams.newTypeId,
133
+ newTimeStarted = baseParams.newTimeStarted,
134
+ splitPreviewTimeEnded = splitParams.splitPreviewTimeEnded,
135
+ newComment = baseParams.newComment,
136
+ newCategoryIds = baseParams.newCategoryIds,
137
+ showTimeEndedOnSplitPreview = splitParams.showTimeEndedOnSplitPreview,
138
+ isButtonEnabled = baseParams.isButtonEnabled,
139
+ )
140
+ }
141
+
142
+ private fun ViewDataParams.mapAdjustParams (): ChangeRecordActionsAdjustDelegate .Parent .ViewDataParams {
143
+ return ChangeRecordActionsAdjustDelegate .Parent .ViewDataParams (
144
+ originalRecordId = adjustParams.originalRecordId,
145
+ adjustNextRecordAvailable = adjustParams.adjustNextRecordAvailable,
146
+ newTypeId = baseParams.newTypeId,
147
+ newTimeStarted = baseParams.newTimeStarted,
148
+ newTimeEnded = baseParams.newTimeEnded,
149
+ adjustPreviewTimeEnded = adjustParams.adjustPreviewTimeEnded,
150
+ originalTypeId = adjustParams.originalTypeId,
151
+ originalTimeStarted = adjustParams.originalTimeStarted,
152
+ adjustPreviewOriginalTimeEnded = adjustParams.adjustPreviewOriginalTimeEnded,
153
+ showTimeEndedOnAdjustPreview = adjustParams.showTimeEndedOnAdjustPreview,
154
+ isTimeEndedAvailable = adjustParams.isTimeEndedAvailable,
155
+ isButtonEnabled = baseParams.isButtonEnabled,
156
+ )
157
+ }
158
+
159
+ private fun ViewDataParams.mapContinueParams (): ChangeRecordActionsContinueDelegate .Parent .ViewDataParams {
160
+ return ChangeRecordActionsContinueDelegate .Parent .ViewDataParams (
161
+ originalRecordId = continueParams.originalRecordId,
162
+ newTypeId = baseParams.newTypeId,
163
+ newTimeStarted = baseParams.newTimeStarted,
164
+ newComment = baseParams.newComment,
165
+ newCategoryIds = baseParams.newCategoryIds,
166
+ isAdditionalActionsAvailable = continueParams.isAdditionalActionsAvailable,
167
+ isButtonEnabled = baseParams.isButtonEnabled,
168
+ )
169
+ }
170
+
171
+ private fun ViewDataParams.mapRepeatParams (): ChangeRecordActionsRepeatDelegate .Parent .ViewDataParams {
172
+ return ChangeRecordActionsRepeatDelegate .Parent .ViewDataParams (
173
+ newTypeId = baseParams.newTypeId,
174
+ newComment = baseParams.newComment,
175
+ newCategoryIds = baseParams.newCategoryIds,
176
+ isAdditionalActionsAvailable = repeatParams.isAdditionalActionsAvailable,
177
+ isButtonEnabled = baseParams.isButtonEnabled,
178
+ )
179
+ }
180
+
181
+ private fun ViewDataParams.mapDuplicateParams (): ChangeRecordActionsDuplicateDelegate .Parent .ViewDataParams {
182
+ return ChangeRecordActionsDuplicateDelegate .Parent .ViewDataParams (
183
+ newTypeId = baseParams.newTypeId,
184
+ newTimeStarted = baseParams.newTimeStarted,
185
+ newTimeEnded = baseParams.newTimeEnded,
186
+ newComment = baseParams.newComment,
187
+ newCategoryIds = baseParams.newCategoryIds,
188
+ isAdditionalActionsAvailable = duplicateParams.isAdditionalActionsAvailable,
189
+ isButtonEnabled = baseParams.isButtonEnabled,
190
+ )
191
+ }
192
+
193
+ private fun ViewDataParams.mapMergeParams (): ChangeRecordActionsMergeDelegate .Parent .ViewDataParams {
194
+ return ChangeRecordActionsMergeDelegate .Parent .ViewDataParams (
195
+ mergeAvailable = mergeParams.mergeAvailable,
196
+ prevRecord = mergeParams.prevRecord,
197
+ newTimeEnded = baseParams.newTimeEnded,
198
+ isButtonEnabled = baseParams.isButtonEnabled,
199
+ )
200
+ }
201
+ }
0 commit comments