@@ -10,34 +10,37 @@ import com.example.util.simpletimetracker.core.interactor.StatisticsMediator
1010import com.example.util.simpletimetracker.core.mapper.TimeMapper
1111import com.example.util.simpletimetracker.domain.activitySuggestion.interactor.GetCurrentActivitySuggestionsInteractor
1212import com.example.util.simpletimetracker.domain.extension.orZero
13- import com.example.util.simpletimetracker.domain.record.interactor.AddRunningRecordMediator
14- import com.example.util.simpletimetracker.domain.recordTag.interactor.GetSelectableTagsInteractor
13+ import com.example.util.simpletimetracker.domain.notifications.interactor.UpdateExternalViewsInteractor
1514import com.example.util.simpletimetracker.domain.prefs.interactor.PrefsInteractor
15+ import com.example.util.simpletimetracker.domain.record.interactor.AddRunningRecordMediator
1616import com.example.util.simpletimetracker.domain.record.interactor.RecordInteractor
17- import com.example.util.simpletimetracker.domain.recordTag.interactor.RecordTagInteractor
18- import com.example.util.simpletimetracker.domain.recordType.interactor.RecordTypeInteractor
1917import com.example.util.simpletimetracker.domain.record.interactor.RemoveRunningRecordMediator
2018import com.example.util.simpletimetracker.domain.record.interactor.RunningRecordInteractor
21- import com.example.util.simpletimetracker.domain.statistics.interactor.SettingsDataUpdateInteractor
2219import com.example.util.simpletimetracker.domain.record.interactor.ShouldShowRecordDataSelectionInteractor
23- import com.example.util.simpletimetracker.domain.notifications.interactor.UpdateExternalViewsInteractor
2420import com.example.util.simpletimetracker.domain.record.model.RecordBase
25- import com.example.util.simpletimetracker.domain.widget.interactor.WidgetInteractor
2621import com.example.util.simpletimetracker.domain.record.model.RecordDataSelectionDialogResult
27- import com.example.util.simpletimetracker.domain.recordTag.model.RecordTag
22+ import com.example.util.simpletimetracker.domain.recordTag.interactor.GetSelectableTagsInteractor
23+ import com.example.util.simpletimetracker.domain.recordTag.interactor.NeedTagValueSelectionInteractor
24+ import com.example.util.simpletimetracker.domain.recordTag.interactor.RecordTagInteractor
25+ import com.example.util.simpletimetracker.domain.recordType.interactor.RecordTypeInteractor
2826import com.example.util.simpletimetracker.domain.recordType.model.RecordType
27+ import com.example.util.simpletimetracker.domain.statistics.interactor.SettingsDataUpdateInteractor
2928import com.example.util.simpletimetracker.domain.statistics.model.ChartFilterType
3029import com.example.util.simpletimetracker.domain.statistics.model.RangeLength
30+ import com.example.util.simpletimetracker.domain.widget.interactor.WidgetInteractor
3131import com.example.util.simpletimetracker.domain.widget.model.WidgetType
3232import com.example.util.simpletimetracker.navigation.Router
3333import com.example.util.simpletimetracker.wear_api.WearActivityDTO
3434import com.example.util.simpletimetracker.wear_api.WearCommunicationAPI
35+ import com.example.util.simpletimetracker.wear_api.WearCurrentActivityDTO
3536import com.example.util.simpletimetracker.wear_api.WearCurrentStateDTO
3637import com.example.util.simpletimetracker.wear_api.WearRecordRepeatResponse
3738import com.example.util.simpletimetracker.wear_api.WearSetSettingsRequest
3839import com.example.util.simpletimetracker.wear_api.WearSettingsDTO
3940import com.example.util.simpletimetracker.wear_api.WearShouldShowTagSelectionRequest
4041import com.example.util.simpletimetracker.wear_api.WearShouldShowTagSelectionResponse
42+ import com.example.util.simpletimetracker.wear_api.WearShouldShowTagValueSelectionRequest
43+ import com.example.util.simpletimetracker.wear_api.WearShouldShowTagValueSelectionResponse
4144import com.example.util.simpletimetracker.wear_api.WearStartActivityRequest
4245import com.example.util.simpletimetracker.wear_api.WearStatisticsDTO
4346import com.example.util.simpletimetracker.wear_api.WearStatisticsRequest
@@ -54,6 +57,7 @@ class WearDataRepo @Inject constructor(
5457 private val runningRecordInteractor : RunningRecordInteractor ,
5558 private val recordInteractor : RecordInteractor ,
5659 private val shouldShowRecordDataSelectionInteractor : ShouldShowRecordDataSelectionInteractor ,
60+ private val needTagValueSelectionInteractor : NeedTagValueSelectionInteractor ,
5761 private val removeRunningRecordMediator : Lazy <RemoveRunningRecordMediator >,
5862 private val addRunningRecordMediator : Lazy <AddRunningRecordMediator >,
5963 private val recordRepeatInteractor : Lazy <RecordRepeatInteractor >,
@@ -74,13 +78,15 @@ class WearDataRepo @Inject constructor(
7478 }
7579
7680 override suspend fun queryCurrentActivities (): WearCurrentStateDTO {
77- val tags = recordTagInteractor.getAll().associateBy( RecordTag ::id)
81+ val tags = recordTagInteractor.getAll()
7882
79- fun mapTags (tagIds : List <Long >): List <WearTagDTO > {
80- return tagIds.mapNotNull { tagId ->
83+ fun mapTags (record : RecordBase ): List <WearCurrentActivityDTO .TagDTO > {
84+ val tagDataMap = record.tags.associateBy { it.tagId }
85+ return tags.mapNotNull { tag ->
86+ if (tag.id !in tagDataMap.keys) return @mapNotNull null
8187 wearDataLocalMapper.map(
82- recordTag = tags[tagId] ? : return @mapNotNull null ,
83- types = emptyMap(), // Color is not needed.
88+ recordTag = tag ,
89+ recordTagData = tagDataMap[tag.id],
8490 )
8591 }
8692 }
@@ -90,12 +96,12 @@ class WearDataRepo @Inject constructor(
9096 }
9197 val runningRecords = runningRecordInteractor.getAll()
9298 val runningRecordsData = runningRecords.map { record ->
93- wearDataLocalMapper.map(record, mapTags(record.tagIds ))
99+ wearDataLocalMapper.map(record, mapTags(record))
94100 }
95101 val prevRecordsData = recordInteractor
96102 .getAllPrev(timeStarted = System .currentTimeMillis())
97103 .map { record ->
98- wearDataLocalMapper.map(record, mapTags(record.tagIds ))
104+ wearDataLocalMapper.map(record, mapTags(record))
99105 }
100106 val suggestionsData = getCurrentActivitySuggestionsInteractor.execute(
101107 recordTypesMapProvider = recordTypesMapProvider,
@@ -152,10 +158,10 @@ class WearDataRepo @Inject constructor(
152158 override suspend fun startActivity (request : WearStartActivityRequest ) {
153159 addRunningRecordMediator.get().startTimer(
154160 typeId = request.id,
155- tags = request.tagIds .map {
161+ tags = request.tags .map {
156162 RecordBase .Tag (
157- tagId = it,
158- numericValue = null , // TODO TAG add value selection to wear
163+ tagId = it.tagId ,
164+ numericValue = it.numericValue,
159165 )
160166 },
161167 comment = " " ,
@@ -199,6 +205,18 @@ class WearDataRepo @Inject constructor(
199205 )
200206 }
201207
208+ override suspend fun queryShouldShowTagValueSelection (
209+ request : WearShouldShowTagValueSelectionRequest ,
210+ ): WearShouldShowTagValueSelectionResponse {
211+ val result = needTagValueSelectionInteractor.execute(
212+ selectedTagIds = request.selectedTagIds,
213+ clickedTagId = request.clickedTagId,
214+ )
215+ return WearShouldShowTagValueSelectionResponse (
216+ shouldShow = result,
217+ )
218+ }
219+
202220 override suspend fun querySettings (): WearSettingsDTO {
203221 return wearDataLocalMapper.map(
204222 allowMultitasking = prefsInteractor.getAllowMultitasking(),
0 commit comments