@@ -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 }
0 commit comments