Skip to content

Commit 67b8dbe

Browse files
committed
fix running untracked in retroactive mode
1 parent c2e3623 commit 67b8dbe

File tree

5 files changed

+166
-152
lines changed

5 files changed

+166
-152
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
package com.example.util.simpletimetracker.core.interactor
2+
3+
import com.example.util.simpletimetracker.core.extension.toParams
4+
import com.example.util.simpletimetracker.core.extension.toRecordParams
5+
import com.example.util.simpletimetracker.core.mapper.ChangeRecordDateTimeMapper
6+
import com.example.util.simpletimetracker.feature_base_adapter.record.RecordViewData
7+
import com.example.util.simpletimetracker.feature_base_adapter.runningRecord.RunningRecordViewData
8+
import com.example.util.simpletimetracker.navigation.params.screen.ChangeRecordParams
9+
import com.example.util.simpletimetracker.navigation.params.screen.ChangeRunningRecordParams
10+
import javax.inject.Inject
11+
12+
class GetChangeRecordNavigationParamsInteractor @Inject constructor(
13+
private val changeRecordDateTimeMapper: ChangeRecordDateTimeMapper,
14+
) {
15+
16+
fun execute(
17+
item: RecordViewData,
18+
from: ChangeRecordParams.From,
19+
shift: Int,
20+
useMilitaryTimeFormat: Boolean,
21+
showSeconds: Boolean,
22+
sharedElements: Pair<Any, String>?,
23+
): ChangeRecordParams {
24+
val preview = ChangeRecordParams.Preview(
25+
name = item.name,
26+
tagName = item.tagName,
27+
timeStarted = item.timeStarted,
28+
timeFinished = item.timeFinished,
29+
timeStartedDateTime = changeRecordDateTimeMapper.map(
30+
param = ChangeRecordDateTimeMapper.Param.DateTime(item.timeStartedTimestamp),
31+
field = ChangeRecordDateTimeMapper.Field.Start,
32+
useMilitaryTimeFormat = useMilitaryTimeFormat,
33+
showSeconds = showSeconds,
34+
).toRecordParams(),
35+
timeEndedDateTime = changeRecordDateTimeMapper.map(
36+
param = ChangeRecordDateTimeMapper.Param.DateTime(item.timeEndedTimestamp),
37+
field = ChangeRecordDateTimeMapper.Field.End,
38+
useMilitaryTimeFormat = useMilitaryTimeFormat,
39+
showSeconds = showSeconds,
40+
).toRecordParams(),
41+
duration = item.duration,
42+
iconId = item.iconId.toParams(),
43+
color = item.color,
44+
comment = item.comment,
45+
)
46+
47+
return when (item) {
48+
is RecordViewData.Tracked -> ChangeRecordParams.Tracked(
49+
transitionName = sharedElements?.second.orEmpty(),
50+
id = item.id,
51+
from = from,
52+
daysFromToday = shift,
53+
preview = preview,
54+
)
55+
is RecordViewData.Untracked -> ChangeRecordParams.Untracked(
56+
transitionName = sharedElements?.second.orEmpty(),
57+
timeStarted = item.timeStartedTimestamp,
58+
timeEnded = item.timeEndedTimestamp,
59+
daysFromToday = shift,
60+
preview = preview,
61+
)
62+
}
63+
}
64+
65+
fun execute(
66+
item: RunningRecordViewData,
67+
from: ChangeRunningRecordParams.From,
68+
useMilitaryTimeFormat: Boolean,
69+
showSeconds: Boolean,
70+
sharedElements: Pair<Any, String>?,
71+
): ChangeRunningRecordParams {
72+
val preview = ChangeRunningRecordParams.Preview(
73+
name = item.name,
74+
tagName = item.tagName,
75+
timeStarted = item.timeStarted,
76+
timeStartedDateTime = changeRecordDateTimeMapper.map(
77+
param = ChangeRecordDateTimeMapper.Param.DateTime(item.timeStartedTimestamp),
78+
field = ChangeRecordDateTimeMapper.Field.Start,
79+
useMilitaryTimeFormat = useMilitaryTimeFormat,
80+
showSeconds = showSeconds,
81+
).toRecordParams(),
82+
duration = item.timer,
83+
durationTotal = item.timerTotal,
84+
goalTime = item.goalTime.toParams(),
85+
iconId = item.iconId.toParams(),
86+
color = item.color,
87+
comment = item.comment,
88+
)
89+
90+
return ChangeRunningRecordParams(
91+
transitionName = sharedElements?.second.orEmpty(),
92+
id = item.id,
93+
from = from,
94+
preview = preview,
95+
)
96+
}
97+
}

features/feature_records/src/main/java/com/example/util/simpletimetracker/feature_records/viewModel/RecordsViewModel.kt

+14-63
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,8 @@ import androidx.lifecycle.viewModelScope
77
import com.example.util.simpletimetracker.core.base.SingleLiveEvent
88
import com.example.util.simpletimetracker.core.extension.set
99
import com.example.util.simpletimetracker.core.extension.toParams
10-
import com.example.util.simpletimetracker.core.extension.toRecordParams
10+
import com.example.util.simpletimetracker.core.interactor.GetChangeRecordNavigationParamsInteractor
1111
import com.example.util.simpletimetracker.core.interactor.SharingInteractor
12-
import com.example.util.simpletimetracker.core.mapper.ChangeRecordDateTimeMapper
1312
import com.example.util.simpletimetracker.core.mapper.RangeViewDataMapper
1413
import com.example.util.simpletimetracker.core.model.NavigationTab
1514
import com.example.util.simpletimetracker.domain.extension.orZero
@@ -53,7 +52,7 @@ class RecordsViewModel @Inject constructor(
5352
private val rangeViewDataMapper: RangeViewDataMapper,
5453
private val recordsViewDataMapper: RecordsViewDataMapper,
5554
private val updateRunningRecordFromChangeScreenInteractor: UpdateRunningRecordFromChangeScreenInteractor,
56-
private val changeRecordDateTimeMapper: ChangeRecordDateTimeMapper,
55+
private val getChangeRecordNavigationParamsInteractor: GetChangeRecordNavigationParamsInteractor,
5756
) : ViewModel() {
5857

5958
var extra: RecordsExtra? = null
@@ -97,28 +96,12 @@ class RecordsViewModel @Inject constructor(
9796
) = viewModelScope.launch {
9897
val useMilitaryTimeFormat = prefsInteractor.getUseMilitaryTimeFormat()
9998
val showSeconds = prefsInteractor.getShowSeconds()
100-
101-
val params = ChangeRunningRecordParams(
102-
transitionName = sharedElements?.second.orEmpty(),
103-
id = item.id,
99+
val params = getChangeRecordNavigationParamsInteractor.execute(
100+
item = item,
104101
from = ChangeRunningRecordParams.From.Records,
105-
preview = ChangeRunningRecordParams.Preview(
106-
name = item.name,
107-
tagName = item.tagName,
108-
timeStarted = item.timeStarted,
109-
timeStartedDateTime = changeRecordDateTimeMapper.map(
110-
param = ChangeRecordDateTimeMapper.Param.DateTime(item.timeStartedTimestamp),
111-
field = ChangeRecordDateTimeMapper.Field.Start,
112-
useMilitaryTimeFormat = useMilitaryTimeFormat,
113-
showSeconds = showSeconds,
114-
).toRecordParams(),
115-
duration = item.timer,
116-
durationTotal = item.timerTotal,
117-
goalTime = item.goalTime.toParams(),
118-
iconId = item.iconId.toParams(),
119-
color = item.color,
120-
comment = item.comment,
121-
),
102+
useMilitaryTimeFormat = useMilitaryTimeFormat,
103+
showSeconds = showSeconds,
104+
sharedElements = sharedElements,
122105
)
123106
router.navigate(
124107
data = ChangeRunningRecordFromMainParams(params),
@@ -132,46 +115,14 @@ class RecordsViewModel @Inject constructor(
132115
) = viewModelScope.launch {
133116
val useMilitaryTimeFormat = prefsInteractor.getUseMilitaryTimeFormat()
134117
val showSeconds = prefsInteractor.getShowSeconds()
135-
136-
val preview = ChangeRecordParams.Preview(
137-
name = item.name,
138-
tagName = item.tagName,
139-
timeStarted = item.timeStarted,
140-
timeFinished = item.timeFinished,
141-
timeStartedDateTime = changeRecordDateTimeMapper.map(
142-
param = ChangeRecordDateTimeMapper.Param.DateTime(item.timeStartedTimestamp),
143-
field = ChangeRecordDateTimeMapper.Field.Start,
144-
useMilitaryTimeFormat = useMilitaryTimeFormat,
145-
showSeconds = showSeconds,
146-
).toRecordParams(),
147-
timeEndedDateTime = changeRecordDateTimeMapper.map(
148-
param = ChangeRecordDateTimeMapper.Param.DateTime(item.timeEndedTimestamp),
149-
field = ChangeRecordDateTimeMapper.Field.End,
150-
useMilitaryTimeFormat = useMilitaryTimeFormat,
151-
showSeconds = showSeconds,
152-
).toRecordParams(),
153-
duration = item.duration,
154-
iconId = item.iconId.toParams(),
155-
color = item.color,
156-
comment = item.comment,
118+
val params = getChangeRecordNavigationParamsInteractor.execute(
119+
item = item,
120+
from = ChangeRecordParams.From.Records,
121+
shift = shift,
122+
useMilitaryTimeFormat = useMilitaryTimeFormat,
123+
showSeconds = showSeconds,
124+
sharedElements = sharedElements,
157125
)
158-
159-
val params = when (item) {
160-
is RecordViewData.Tracked -> ChangeRecordParams.Tracked(
161-
transitionName = sharedElements?.second.orEmpty(),
162-
id = item.id,
163-
from = ChangeRecordParams.From.Records,
164-
daysFromToday = shift,
165-
preview = preview,
166-
)
167-
is RecordViewData.Untracked -> ChangeRecordParams.Untracked(
168-
transitionName = sharedElements?.second.orEmpty(),
169-
timeStarted = item.timeStartedTimestamp,
170-
timeEnded = item.timeEndedTimestamp,
171-
daysFromToday = shift,
172-
preview = preview,
173-
)
174-
}
175126
router.navigate(
176127
data = ChangeRecordFromMainParams(params),
177128
sharedElements = sharedElements?.let(::mapOf).orEmpty(),

features/feature_records_all/src/main/java/com/example/util/simpletimetracker/feature_records_all/viewModel/RecordsAllViewModel.kt

+14-64
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,7 @@ import androidx.lifecycle.ViewModel
66
import androidx.lifecycle.viewModelScope
77
import com.example.util.simpletimetracker.core.extension.set
88
import com.example.util.simpletimetracker.core.extension.toModel
9-
import com.example.util.simpletimetracker.core.extension.toParams
10-
import com.example.util.simpletimetracker.core.extension.toRecordParams
11-
import com.example.util.simpletimetracker.core.mapper.ChangeRecordDateTimeMapper
9+
import com.example.util.simpletimetracker.core.interactor.GetChangeRecordNavigationParamsInteractor
1210
import com.example.util.simpletimetracker.domain.prefs.interactor.PrefsInteractor
1311
import com.example.util.simpletimetracker.feature_base_adapter.ViewHolderType
1412
import com.example.util.simpletimetracker.feature_base_adapter.loader.LoaderViewData
@@ -35,7 +33,7 @@ class RecordsAllViewModel @Inject constructor(
3533
private val recordsAllViewDataInteractor: RecordsAllViewDataInteractor,
3634
private val recordsAllViewDataMapper: RecordsAllViewDataMapper,
3735
private val prefsInteractor: PrefsInteractor,
38-
private val changeRecordDateTimeMapper: ChangeRecordDateTimeMapper,
36+
private val getChangeRecordNavigationParamsInteractor: GetChangeRecordNavigationParamsInteractor,
3937
) : ViewModel() {
4038

4139
lateinit var extra: RecordsAllParams
@@ -65,28 +63,12 @@ class RecordsAllViewModel @Inject constructor(
6563
) = viewModelScope.launch {
6664
val useMilitaryTimeFormat = prefsInteractor.getUseMilitaryTimeFormat()
6765
val showSeconds = prefsInteractor.getShowSeconds()
68-
69-
val params = ChangeRunningRecordParams(
70-
transitionName = sharedElements.second,
71-
id = item.id,
66+
val params = getChangeRecordNavigationParamsInteractor.execute(
67+
item = item,
7268
from = ChangeRunningRecordParams.From.Records,
73-
preview = ChangeRunningRecordParams.Preview(
74-
name = item.name,
75-
tagName = item.tagName,
76-
timeStarted = item.timeStarted,
77-
timeStartedDateTime = changeRecordDateTimeMapper.map(
78-
param = ChangeRecordDateTimeMapper.Param.DateTime(item.timeStartedTimestamp),
79-
field = ChangeRecordDateTimeMapper.Field.Start,
80-
useMilitaryTimeFormat = useMilitaryTimeFormat,
81-
showSeconds = showSeconds,
82-
).toRecordParams(),
83-
duration = item.timer,
84-
durationTotal = item.timerTotal,
85-
goalTime = item.goalTime.toParams(),
86-
iconId = item.iconId.toParams(),
87-
color = item.color,
88-
comment = item.comment,
89-
),
69+
useMilitaryTimeFormat = useMilitaryTimeFormat,
70+
showSeconds = showSeconds,
71+
sharedElements = sharedElements,
9072
)
9173
router.navigate(
9274
data = ChangeRunningRecordFromRecordsAllParams(params),
@@ -100,46 +82,14 @@ class RecordsAllViewModel @Inject constructor(
10082
) = viewModelScope.launch {
10183
val useMilitaryTimeFormat = prefsInteractor.getUseMilitaryTimeFormat()
10284
val showSeconds = prefsInteractor.getShowSeconds()
103-
104-
val preview = ChangeRecordParams.Preview(
105-
name = item.name,
106-
tagName = item.tagName,
107-
timeStarted = item.timeStarted,
108-
timeFinished = item.timeFinished,
109-
timeStartedDateTime = changeRecordDateTimeMapper.map(
110-
param = ChangeRecordDateTimeMapper.Param.DateTime(item.timeStartedTimestamp),
111-
field = ChangeRecordDateTimeMapper.Field.Start,
112-
useMilitaryTimeFormat = useMilitaryTimeFormat,
113-
showSeconds = showSeconds,
114-
).toRecordParams(),
115-
timeEndedDateTime = changeRecordDateTimeMapper.map(
116-
param = ChangeRecordDateTimeMapper.Param.DateTime(item.timeEndedTimestamp),
117-
field = ChangeRecordDateTimeMapper.Field.End,
118-
useMilitaryTimeFormat = useMilitaryTimeFormat,
119-
showSeconds = showSeconds,
120-
).toRecordParams(),
121-
duration = item.duration,
122-
iconId = item.iconId.toParams(),
123-
color = item.color,
124-
comment = item.comment,
85+
val params = getChangeRecordNavigationParamsInteractor.execute(
86+
item = item,
87+
from = ChangeRecordParams.From.RecordsAll,
88+
shift = 0,
89+
useMilitaryTimeFormat = useMilitaryTimeFormat,
90+
showSeconds = showSeconds,
91+
sharedElements = sharedElements,
12592
)
126-
127-
val params = when (item) {
128-
is RecordViewData.Tracked -> ChangeRecordParams.Tracked(
129-
transitionName = sharedElements.second,
130-
id = item.id,
131-
from = ChangeRecordParams.From.RecordsAll,
132-
daysFromToday = 0,
133-
preview = preview,
134-
)
135-
is RecordViewData.Untracked -> ChangeRecordParams.Untracked(
136-
transitionName = sharedElements.second,
137-
timeStarted = item.timeStartedTimestamp,
138-
timeEnded = item.timeEndedTimestamp,
139-
daysFromToday = 0,
140-
preview = preview,
141-
)
142-
}
14393
router.navigate(
14494
data = ChangeRecordFromRecordsAllParams(params),
14595
sharedElements = mapOf(sharedElements),

0 commit comments

Comments
 (0)