Skip to content

Commit 5e3f091

Browse files
committed
fix close after one
1 parent 2752ef6 commit 5e3f091

File tree

41 files changed

+457
-126
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+457
-126
lines changed

core/common/src/main/java/com/example/util/simpletimetracker/core/interactor/IsMultipleTagChoiceAvailableInteractor.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ class IsMultipleTagChoiceAvailableInteractor @Inject constructor(
88

99
fun execute(
1010
typeId: Long,
11-
hasPreselectedTags: Boolean,
1211
closeAfterOne: Boolean,
1312
excludedActivities: Set<Long>,
1413
): Boolean {
@@ -17,7 +16,6 @@ class IsMultipleTagChoiceAvailableInteractor @Inject constructor(
1716
closeAfterOne = closeAfterOne,
1817
excludedActivities = excludedActivities,
1918
)
20-
// If there are preselected tags - ignore setting.
21-
return hasPreselectedTags || !shouldCloseAfterOne
19+
return !shouldCloseAfterOne
2220
}
2321
}

core/src/main/java/com/example/util/simpletimetracker/core/interactor/RecordTagViewDataInteractor.kt

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,10 @@ class RecordTagViewDataInteractor @Inject constructor(
7575
viewData += commonViewDataMapper.mapSelectedHint(
7676
isEmpty = selected.isEmpty(),
7777
)
78+
} else if (selected.isNotEmpty()) {
79+
viewData += InfoViewData(
80+
text = resourceRepo.getString(R.string.something_preselected),
81+
)
7882
}
7983

8084
viewData += selected.map {
@@ -86,7 +90,10 @@ class RecordTagViewDataInteractor @Inject constructor(
8690
)
8791
}
8892

89-
if (multipleChoiceAvailable && available.isNotEmpty()) {
93+
if (
94+
(multipleChoiceAvailable && available.isNotEmpty()) ||
95+
(!multipleChoiceAvailable && selected.isNotEmpty() && available.isNotEmpty())
96+
) {
9097
viewData += DividerViewData("divider_available".hashCode().toLong())
9198
}
9299

@@ -138,7 +145,10 @@ class RecordTagViewDataInteractor @Inject constructor(
138145
}
139146

140147
if (buttonsViewData.isNotEmpty()) {
141-
if (multipleChoiceAvailable || availableFromOtherActivities.isNotEmpty()) {
148+
if (multipleChoiceAvailable ||
149+
selected.isNotEmpty() ||
150+
availableFromOtherActivities.isNotEmpty()
151+
) {
142152
viewData += DividerViewData("divider_buttons".hashCode().toLong())
143153
}
144154
viewData += buttonsViewData

domain/src/main/java/com/example/util/simpletimetracker/domain/record/interactor/ProcessRulesInteractor.kt

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,14 @@ import com.example.util.simpletimetracker.domain.base.SuspendLazy
55
import com.example.util.simpletimetracker.domain.complexRule.interactor.ComplexRuleProcessActionInteractor
66
import com.example.util.simpletimetracker.domain.record.model.Record
77
import com.example.util.simpletimetracker.domain.record.model.RecordBase
8+
import com.example.util.simpletimetracker.domain.recordTag.interactor.RecordTagInteractor
89
import com.example.util.simpletimetracker.domain.recordTag.interactor.RecordTypeToDefaultTagInteractor
10+
import com.example.util.simpletimetracker.domain.recordTag.model.RecordTag
911
import javax.inject.Inject
1012
import kotlin.collections.forEach
1113

1214
class ProcessRulesInteractor @Inject constructor(
15+
private val recordTagInteractor: RecordTagInteractor,
1316
private val runningRecordInteractor: RunningRecordInteractor,
1417
private val complexRuleProcessActionInteractor: ComplexRuleProcessActionInteractor,
1518
private val recordTypeToDefaultTagInteractor: RecordTypeToDefaultTagInteractor,
@@ -46,9 +49,15 @@ class ProcessRulesInteractor @Inject constructor(
4649
currentTags: List<RecordBase.Tag>,
4750
tagValuesFromRules: List<RecordBase.Tag>,
4851
): List<RecordBase.Tag> {
52+
val allTags = recordTagInteractor.getAll().associateBy(RecordTag::id)
4953
val defaultTags = recordTypeToDefaultTagInteractor.getTags(typeId)
54+
.map { RecordBase.Tag(tagId = it, numericValue = null) }
5055
val merged = linkedMapOf<Long, RecordBase.Tag>()
5156

57+
fun List<RecordBase.Tag>.filter(): List<RecordBase.Tag> {
58+
return this.filter { allTags[it.tagId]?.archived == false }
59+
}
60+
5261
fun merge(tag: RecordBase.Tag) {
5362
val existing = merged[tag.tagId]
5463
// Tags with values takes precedence.
@@ -57,9 +66,9 @@ class ProcessRulesInteractor @Inject constructor(
5766
}
5867
}
5968

60-
currentTags.forEach(::merge)
61-
defaultTags.map { RecordBase.Tag(tagId = it, numericValue = null) }.forEach(::merge)
62-
tagValuesFromRules.forEach(::merge)
69+
currentTags.filter().forEach(::merge)
70+
defaultTags.filter().forEach(::merge)
71+
tagValuesFromRules.filter().forEach(::merge)
6372

6473
return merged.values.toList()
6574
}

domain/src/main/java/com/example/util/simpletimetracker/domain/record/interactor/ShouldShowRecordDataSelectionInteractor.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,8 @@ class ShouldShowRecordDataSelectionInteractor @Inject constructor(
9292
private suspend fun filterNumericTagValueSelectionTagIds(tagIds: Set<Long>): List<Long> {
9393
if (tagIds.isEmpty()) return emptyList()
9494
val tags = recordTagInteractor.getAll().associateBy(RecordTag::id)
95-
return tagIds.filter { tags[it]?.valueType == RecordTagValueType.NUMERIC }
95+
return tagIds.filter {
96+
tags[it]?.valueType == RecordTagValueType.NUMERIC && tags[it]?.archived == false
97+
}
9698
}
9799
}

domain/src/test/java/com/example/util/simpletimetracker/domain/complexRule/interactor/ComplexRuleProcessActionInteractorTest.kt

Lines changed: 13 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import com.example.util.simpletimetracker.domain.complexRule.model.ComplexRule
55
import com.example.util.simpletimetracker.domain.daysOfWeek.interactor.GetCurrentDayInteractor
66
import com.example.util.simpletimetracker.domain.daysOfWeek.model.DayOfWeek
77
import com.example.util.simpletimetracker.domain.record.model.RecordBase
8+
import com.example.util.simpletimetracker.domain.utils.tag
89
import kotlinx.coroutines.runBlocking
910
import org.junit.Assert.assertEquals
1011
import org.junit.Before
@@ -36,11 +37,11 @@ class ComplexRuleProcessActionInteractorTest {
3637
fun mergesSelectOnStart(): Unit = runBlocking {
3738
// Given
3839
val rule1 = assignTagRule(
39-
actionAssignTagValues = listOf(tag(10L, numericValue = null)),
40+
actionAssignTagValues = listOf(tag(10L, null)),
4041
actionAssignTagValueOnStartIds = setOf(10L),
4142
)
4243
val rule2 = assignTagRule(
43-
actionAssignTagValues = listOf(tag(20L, numericValue = null)),
44+
actionAssignTagValues = listOf(tag(20L, null)),
4445
actionAssignTagValueOnStartIds = setOf(20L),
4546
)
4647
`when`(complexRuleInteractor.getAll()).thenReturn(listOf(rule1, rule2))
@@ -60,7 +61,7 @@ class ComplexRuleProcessActionInteractorTest {
6061
fun dropsSelectOnStartWhenNumericExists(): Unit = runBlocking {
6162
// Given
6263
val rule = assignTagRule(
63-
actionAssignTagValues = listOf(tag(30L, numericValue = 3.5)),
64+
actionAssignTagValues = listOf(tag(30L, 3.5)),
6465
actionAssignTagValueOnStartIds = setOf(30L),
6566
)
6667
`when`(complexRuleInteractor.getAll()).thenReturn(listOf(rule))
@@ -80,7 +81,7 @@ class ComplexRuleProcessActionInteractorTest {
8081
fun ignoresSelectOnStartWithoutMergedTag(): Unit = runBlocking {
8182
// Given
8283
val rule = assignTagRule(
83-
actionAssignTagValues = listOf(tag(40L, numericValue = null)),
84+
actionAssignTagValues = listOf(tag(40L, null)),
8485
actionAssignTagValueOnStartIds = setOf(40L, 99L),
8586
)
8687
`when`(complexRuleInteractor.getAll()).thenReturn(listOf(rule))
@@ -100,11 +101,11 @@ class ComplexRuleProcessActionInteractorTest {
100101
fun mergesAssignedTags(): Unit = runBlocking {
101102
// Given
102103
val rule1 = assignTagRule(
103-
actionAssignTagValues = listOf(tag(50L, numericValue = null)),
104+
actionAssignTagValues = listOf(tag(50L, null)),
104105
actionAssignTagValueOnStartIds = emptySet(),
105106
)
106107
val rule2 = assignTagRule(
107-
actionAssignTagValues = listOf(tag(60L, numericValue = null)),
108+
actionAssignTagValues = listOf(tag(60L, null)),
108109
actionAssignTagValueOnStartIds = emptySet(),
109110
)
110111
`when`(complexRuleInteractor.getAll()).thenReturn(listOf(rule1, rule2))
@@ -118,7 +119,7 @@ class ComplexRuleProcessActionInteractorTest {
118119

119120
// Then
120121
assertEquals(
121-
listOf(tag(50L, numericValue = null), tag(60L, numericValue = null)),
122+
listOf(tag(50L, null), tag(60L, null)),
122123
result.tags,
123124
)
124125
}
@@ -127,15 +128,15 @@ class ComplexRuleProcessActionInteractorTest {
127128
fun numericValuesOverrideEarlierNull(): Unit = runBlocking {
128129
// Given
129130
val ruleWithNull = assignTagRule(
130-
actionAssignTagValues = listOf(tag(70L, numericValue = null)),
131+
actionAssignTagValues = listOf(tag(70L, null)),
131132
actionAssignTagValueOnStartIds = emptySet(),
132133
)
133134
val ruleWithNumeric = assignTagRule(
134-
actionAssignTagValues = listOf(tag(70L, numericValue = 9.0)),
135+
actionAssignTagValues = listOf(tag(70L, 9.0)),
135136
actionAssignTagValueOnStartIds = emptySet(),
136137
)
137138
val ruleWithLateNull = assignTagRule(
138-
actionAssignTagValues = listOf(tag(70L, numericValue = null)),
139+
actionAssignTagValues = listOf(tag(70L, null)),
139140
actionAssignTagValueOnStartIds = emptySet(),
140141
)
141142
`when`(complexRuleInteractor.getAll()).thenReturn(listOf(ruleWithNull, ruleWithNumeric, ruleWithLateNull))
@@ -148,7 +149,7 @@ class ComplexRuleProcessActionInteractorTest {
148149
)
149150

150151
// Then
151-
assertEquals(listOf(tag(70L, numericValue = 9.0)), result.tags)
152+
assertEquals(listOf(tag(70L, 9.0)), result.tags)
152153
}
153154

154155
@Test
@@ -190,7 +191,7 @@ class ComplexRuleProcessActionInteractorTest {
190191
fun leavesMultitaskingUndefinedWhenNoAllowOrDisallowRules(): Unit = runBlocking {
191192
// Given
192193
val rule = assignTagRule(
193-
actionAssignTagValues = listOf(tag(80L, numericValue = null)),
194+
actionAssignTagValues = listOf(tag(80L, null)),
194195
actionAssignTagValueOnStartIds = emptySet(),
195196
)
196197
`when`(complexRuleInteractor.getAll()).thenReturn(listOf(rule))
@@ -223,13 +224,6 @@ class ComplexRuleProcessActionInteractorTest {
223224
)
224225
}
225226

226-
private fun tag(
227-
tagId: Long,
228-
numericValue: Double?,
229-
): RecordBase.Tag {
230-
return RecordBase.Tag(tagId = tagId, numericValue = numericValue)
231-
}
232-
233227
private fun multitaskingRule(action: ComplexRule.Action): ComplexRule {
234228
return ComplexRule(
235229
id = 0L,

0 commit comments

Comments
 (0)