@@ -5,14 +5,14 @@ import com.example.util.simpletimetracker.core.interactor.ActivitySuggestionView
55import com.example.util.simpletimetracker.core.interactor.FilterGoalsByDayOfWeekInteractor
66import com.example.util.simpletimetracker.core.interactor.GetCurrentRecordsDurationInteractor
77import com.example.util.simpletimetracker.core.interactor.GetRunningRecordViewDataMediator
8- import com.example.util.simpletimetracker.core.mapper.RecordShortcutViewDataMapper
8+ import com.example.util.simpletimetracker.core.interactor.RecordsShortcutsViewDataInteractor
99import com.example.util.simpletimetracker.core.mapper.RecordTypeViewDataMapper
10+ import com.example.util.simpletimetracker.domain.extension.addBetweenEach
1011import com.example.util.simpletimetracker.domain.extension.plus
1112import com.example.util.simpletimetracker.domain.prefs.interactor.PrefsInteractor
1213import com.example.util.simpletimetracker.domain.record.interactor.RecordInteractor
1314import com.example.util.simpletimetracker.domain.record.interactor.RunningRecordInteractor
1415import com.example.util.simpletimetracker.domain.record.model.RunningRecord
15- import com.example.util.simpletimetracker.domain.recordShortcut.interactor.RecordShortcutInteractor
1616import com.example.util.simpletimetracker.domain.recordTag.interactor.RecordTagInteractor
1717import com.example.util.simpletimetracker.domain.recordType.interactor.RecordTypeGoalInteractor
1818import com.example.util.simpletimetracker.domain.recordType.interactor.RecordTypeInteractor
@@ -31,14 +31,13 @@ class RunningRecordsViewDataInteractor @Inject constructor(
3131 private val runningRecordInteractor : RunningRecordInteractor ,
3232 private val recordInteractor : RecordInteractor ,
3333 private val activityFilterViewDataInteractor : ActivityFilterViewDataInteractor ,
34- private val recordShortcutInteractor : RecordShortcutInteractor ,
3534 private val mapper : RunningRecordsViewDataMapper ,
3635 private val recordTypeViewDataMapper : RecordTypeViewDataMapper ,
37- private val recordShortcutViewDataMapper : RecordShortcutViewDataMapper ,
3836 private val getRunningRecordViewDataMediator : GetRunningRecordViewDataMediator ,
3937 private val getCurrentRecordsDurationInteractor : GetCurrentRecordsDurationInteractor ,
4038 private val filterGoalsByDayOfWeekInteractor : FilterGoalsByDayOfWeekInteractor ,
4139 private val activitySuggestionViewDataInteractor : ActivitySuggestionViewDataInteractor ,
40+ private val recordsShortcutsViewDataInteractor : RecordsShortcutsViewDataInteractor ,
4241) {
4342
4443 suspend fun getViewData (
@@ -50,7 +49,6 @@ class RunningRecordsViewDataInteractor @Inject constructor(
5049 val recordTags = recordTagInteractor.getAll()
5150 val runningRecords = runningRecordInteractor.getAll()
5251 val recordTypesRunning = runningRecords.map(RunningRecord ::id)
53- val shortcuts = recordShortcutInteractor.getAll()
5452 val numberOfCards = prefsInteractor.getNumberOfCards()
5553 val isDarkTheme = prefsInteractor.getDarkMode()
5654 val useMilitaryTime = prefsInteractor.getUseMilitaryTimeFormat()
@@ -76,9 +74,6 @@ class RunningRecordsViewDataInteractor @Inject constructor(
7674 // No goals - no need to calculate durations.
7775 emptyMap()
7876 }
79- val runningRecordsProcessed = runningRecords.map { runningRecord ->
80- runningRecord.copy(tags = runningRecord.tags.sortedBy { it.tagId })
81- }
8277
8378 val runningRecordsViewData = when {
8479 showFirstEnterHint -> {
@@ -123,8 +118,6 @@ class RunningRecordsViewDataInteractor @Inject constructor(
123118 mapper.mapToHasRunningRecords(),
124119 )
125120 }
126- }.let {
127- it + DividerViewData (" running_records_divider" .hashCode().toLong())
128121 }
129122
130123 val filter = activityFilterViewDataInteractor.getFilter()
@@ -133,21 +126,18 @@ class RunningRecordsViewDataInteractor @Inject constructor(
133126 isDarkTheme = isDarkTheme,
134127 isFiltersCollapsed = isFiltersCollapsed,
135128 appendAddButton = true ,
136- ).let {
137- if (it.isNotEmpty()) it + DividerViewData (" filter_divider" .hashCode().toLong()) else it
138- }
129+ )
139130
140131 val suggestionsViewData = activitySuggestionViewDataInteractor.getSuggestionsViewData(
132+ filter = filter,
141133 recordTypesMap = recordTypesMap,
142134 goals = goals,
143135 runningRecords = runningRecords,
144136 allDailyCurrents = allDailyCurrents,
145137 completeTypeIds = completeTypeIds,
146138 numberOfCards = numberOfCards,
147139 isDarkTheme = isDarkTheme,
148- ).let {
149- if (it.isNotEmpty()) it + DividerViewData (" suggestions_divider" .hashCode().toLong()) else it
150- }
140+ )
151141
152142 val recordTypesViewData = recordTypes
153143 .filterNot {
@@ -199,24 +189,13 @@ class RunningRecordsViewDataInteractor @Inject constructor(
199189 }
200190 }
201191
202- val shortcutsViewData = shortcuts.mapNotNull { shortcut ->
203- val isRunning = runningRecordsProcessed.any { runningRecord ->
204- runningRecord.id == shortcut.typeId &&
205- runningRecord.comment == shortcut.comment &&
206- runningRecord.tags == shortcut.tags.sortedBy { it.tagId }
207- }
208- recordShortcutViewDataMapper.map(
209- shortcut = shortcut,
210- recordType = recordTypesMap[shortcut.typeId] ? : return @mapNotNull null ,
211- recordTags = recordTags,
212- isDarkTheme = isDarkTheme,
213- isFiltered = isRunning,
214- )
215- }.takeIf {
216- it.isNotEmpty()
217- }?.let {
218- listOf (DividerViewData (" shortcuts_divider" .hashCode().toLong())) + it
219- }
192+ val shortcutsViewData = recordsShortcutsViewDataInteractor.getShortcutsViewData(
193+ filter = filter,
194+ recordTypesMap = recordTypesMap,
195+ recordTags = recordTags,
196+ runningRecords = runningRecords,
197+ isDarkTheme = isDarkTheme,
198+ )
220199
221200 // Flexbox layout doesn't fully support clipToPadding = false.
222201 // Because of that bottom padding with nav bar insets are not applied to main recycler.
@@ -231,11 +210,18 @@ class RunningRecordsViewDataInteractor @Inject constructor(
231210 ).let (::listOf)
232211 }
233212
234- return runningRecordsViewData +
235- filtersViewData +
236- suggestionsViewData +
237- recordTypesViewData +
238- shortcutsViewData +
239- bottomSpaceForNavBar
213+ return listOf (
214+ runningRecordsViewData,
215+ filtersViewData,
216+ suggestionsViewData,
217+ recordTypesViewData,
218+ shortcutsViewData,
219+ ).filter {
220+ it.isNotEmpty()
221+ }.addBetweenEach { index ->
222+ listOf (DividerViewData (index.toLong()))
223+ }.flatten().plus(
224+ bottomSpaceForNavBar,
225+ )
240226 }
241227}
0 commit comments