Skip to content

Commit 5c1461d

Browse files
committed
improve record filtering, remove allocations
1 parent eecb97a commit 5c1461d

3 files changed

Lines changed: 19 additions & 13 deletions

File tree

app/src/androidTest/java/com/example/util/simpletimetracker/ComplexRulesTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -662,7 +662,7 @@ class ComplexRulesTest : BaseUiTest() {
662662
// Check tag value selection
663663
NavUtils.openRunningRecordsScreen()
664664
clickOnViewWithText(typeName)
665-
checkViewIsDisplayed(withId(dialogsR.id.tvRecordTagValueSelection))
665+
checkViewIsDisplayed(withText(tagName))
666666
checkViewIsDisplayed(withId(dialogsR.id.btnRecordTagSelectionSave))
667667
}
668668

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

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@ class RecordFilterInteractor @Inject constructor(
131131
val manuallyFilteredItems: Map<RecordsFilter.ManuallyFilteredItem, Boolean> = filters.getManuallyFilteredItems()
132132
val daysOfWeek: Set<DayOfWeek> = filters.getDaysOfWeek()
133133
val timeOfDay: Range? = filters.getTimeOfDay()
134+
val timeOfDayRanges: List<Range> = timeOfDay?.let(::getTimeOfDayRanges).orEmpty()
134135
val durations: List<Range> = filters.getDuration()?.let(::listOf).orEmpty()
135136
val duplicationItems: List<RecordsFilter.DuplicationsItem> = filters.getDuplicationItems()
136137

@@ -238,19 +239,17 @@ class RecordFilterInteractor @Inject constructor(
238239

239240
fun RecordBase.selectedByTag(): Boolean {
240241
if (selectedTagItems.isEmpty()) return true
241-
val tagIds = tags.map(RecordBase.Tag::tagId)
242-
return if (tagIds.isNotEmpty()) {
243-
tagIds.any { tagId -> tagId in selectedTaggedIds }
242+
return if (tags.isNotEmpty()) {
243+
tags.any { tag -> tag.tagId in selectedTaggedIds }
244244
} else {
245245
selectedUntagged
246246
}
247247
}
248248

249249
fun RecordBase.filteredByTag(): Boolean {
250250
if (filteredTagItems.isEmpty()) return false
251-
val tagIds = tags.map(RecordBase.Tag::tagId)
252-
return if (tagIds.isNotEmpty()) {
253-
tagIds.any { tagId -> tagId in filteredTaggedIds }
251+
return if (tags.isNotEmpty()) {
252+
tags.any { tag -> tag.tagId in filteredTaggedIds }
254253
} else {
255254
filteredUntagged
256255
}
@@ -323,11 +322,6 @@ class RecordFilterInteractor @Inject constructor(
323322
} else {
324323
listOf(Range(0, recordEnd), Range(recordStart, dayInMillis))
325324
}
326-
val timeOfDayRanges = if (timeOfDay.timeStarted <= timeOfDay.timeEnded) {
327-
listOf(Range(timeOfDay.timeStarted, timeOfDay.timeEnded))
328-
} else {
329-
listOf(Range(0, timeOfDay.timeEnded), Range(timeOfDay.timeStarted, dayInMillis))
330-
}
331325

332326
return recordRanges.any { recordRange ->
333327
timeOfDayRanges.any { it.isOverlappingWith(recordRange) }
@@ -368,6 +362,19 @@ class RecordFilterInteractor @Inject constructor(
368362
return records
369363
}
370364

365+
private fun getTimeOfDayRanges(timeOfDay: Range): List<Range> {
366+
return if (timeOfDay.timeStarted <= timeOfDay.timeEnded) {
367+
listOf(
368+
Range(timeOfDay.timeStarted, timeOfDay.timeEnded),
369+
)
370+
} else {
371+
listOf(
372+
Range(0, timeOfDay.timeEnded),
373+
Range(timeOfDay.timeStarted, dayInMillis),
374+
)
375+
}
376+
}
377+
371378
companion object {
372379
private val dayInMillis = TimeUnit.DAYS.toMillis(1)
373380
}

features/feature_data_edit/src/main/res/layout/data_edit_fragment.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -376,7 +376,6 @@
376376
style="@style/AppButtonActive"
377377
android:layout_width="match_parent"
378378
android:layout_marginHorizontal="8dp"
379-
android:foreground="?selectableItemBackground"
380379
android:text="@string/change_record_duplicate"
381380
app:layout_constraintTop_toBottomOf="@id/dividerDataEditChange"
382381
tools:ignore="UnusedAttribute" />

0 commit comments

Comments
 (0)