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