Skip to content

Commit dba88b0

Browse files
committed
change record refactor
1 parent ceb96a4 commit dba88b0

File tree

27 files changed

+100
-107
lines changed

27 files changed

+100
-107
lines changed

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,7 @@ class RecordFilterInteractor @Inject constructor(
228228

229229
fun RecordBase.selectedByTag(): Boolean {
230230
if (selectedTagItems.isEmpty()) return true
231+
val tagIds = tags.map(RecordBase.Tag::tagId)
231232
return if (tagIds.isNotEmpty()) {
232233
tagIds.any { tagId -> tagId in selectedTaggedIds }
233234
} else {
@@ -237,6 +238,7 @@ class RecordFilterInteractor @Inject constructor(
237238

238239
fun RecordBase.filteredByTag(): Boolean {
239240
if (filteredTagItems.isEmpty()) return false
241+
val tagIds = tags.map(RecordBase.Tag::tagId)
240242
return if (tagIds.isNotEmpty()) {
241243
tagIds.any { tagId -> tagId in filteredTaggedIds }
242244
} else {

core/src/main/java/com/example/util/simpletimetracker/core/mapper/MultitaskRecordViewDataMapper.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ class MultitaskRecordViewDataMapper @Inject constructor(
2727
recordViewDataMapper.map(
2828
record = record,
2929
recordType = recordTypes[record.typeId] ?: return@mapNotNull null,
30-
recordTags = recordTags.filter { it.id in record.tagIds },
30+
recordTags = recordTags,
3131
isDarkTheme = isDarkTheme,
3232
useMilitaryTime = useMilitaryTime,
3333
useProportionalMinutes = useProportionalMinutes,

core/src/main/java/com/example/util/simpletimetracker/core/mapper/RecordViewDataMapper.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import com.example.util.simpletimetracker.core.R
55
import com.example.util.simpletimetracker.core.repo.ResourceRepo
66
import com.example.util.simpletimetracker.domain.extension.dropSeconds
77
import com.example.util.simpletimetracker.domain.record.model.Record
8+
import com.example.util.simpletimetracker.domain.record.model.RecordBase
89
import com.example.util.simpletimetracker.domain.recordTag.model.RecordTag
910
import com.example.util.simpletimetracker.domain.recordType.model.RecordType
1011
import com.example.util.simpletimetracker.feature_base_adapter.ViewHolderType
@@ -34,13 +35,15 @@ class RecordViewDataMapper @Inject constructor(
3435
useProportionalMinutes: Boolean,
3536
showSeconds: Boolean,
3637
): RecordViewData.Tracked {
38+
val tagIds = record.tags.map(RecordBase.Tag::tagId)
39+
3740
return RecordViewData.Tracked(
3841
id = record.id,
3942
timeStartedTimestamp = record.timeStarted,
4043
timeEndedTimestamp = record.timeEnded,
4144
name = recordType.name,
4245
tagName = recordTagFullNameMapper.getFullName(
43-
tags = recordTags,
46+
tags = recordTags.filter { it.id in tagIds },
4447
tagData = record.tags,
4548
),
4649
timeStarted = timeMapper.formatTime(
@@ -82,7 +85,7 @@ class RecordViewDataMapper @Inject constructor(
8285
return map(
8386
record = record,
8487
recordType = recordTypes[record.typeId] ?: return null,
85-
recordTags = recordTags.filter { it.id in record.tagIds },
88+
recordTags = recordTags,
8689
isDarkTheme = isDarkTheme,
8790
useMilitaryTime = useMilitaryTime,
8891
useProportionalMinutes = useProportionalMinutes,

core/src/main/java/com/example/util/simpletimetracker/core/mapper/RunningRecordViewDataMapper.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package com.example.util.simpletimetracker.core.mapper
33
import com.example.util.simpletimetracker.core.R
44
import com.example.util.simpletimetracker.core.interactor.GetCurrentRecordsDurationInteractor
55
import com.example.util.simpletimetracker.core.repo.ResourceRepo
6+
import com.example.util.simpletimetracker.domain.record.model.RecordBase
67
import com.example.util.simpletimetracker.domain.record.model.RunningRecord
78
import com.example.util.simpletimetracker.domain.recordTag.model.RecordTag
89
import com.example.util.simpletimetracker.domain.recordType.extension.getDaily
@@ -37,12 +38,13 @@ class RunningRecordViewDataMapper @Inject constructor(
3738
totalDurationVisible: Boolean,
3839
): RunningRecordViewData {
3940
val currentDuration = System.currentTimeMillis() - runningRecord.timeStarted
41+
val tagIds = runningRecord.tags.map(RecordBase.Tag::tagId)
4042

4143
return RunningRecordViewData(
4244
id = runningRecord.id,
4345
name = recordType.name,
4446
tagName = recordTagFullNameMapper.getFullName(
45-
tags = recordTags,
47+
tags = recordTags.filter { it.id in tagIds },
4648
tagData = runningRecord.tags,
4749
),
4850
timeStarted = timeMapper.formatTime(

data_local/src/main/java/com/example/util/simpletimetracker/data_local/file/CsvRepoImpl.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import kotlinx.coroutines.withContext
3232
import timber.log.Timber
3333
import java.io.BufferedOutputStream
3434
import androidx.core.net.toUri
35+
import com.example.util.simpletimetracker.domain.record.model.RecordBase
3536

3637
class CsvRepoImpl @Inject constructor(
3738
private val contentResolver: ContentResolver,
@@ -75,11 +76,12 @@ class CsvRepoImpl @Inject constructor(
7576
records
7677
.sortedBy { it.timeStarted }
7778
.forEach { record ->
79+
val tagIds = record.tags.map(RecordBase.Tag::tagId)
7880
toCsvString(
7981
record = record,
8082
recordType = recordTypes[record.typeId],
8183
categories = typeToCategories[record.typeId].orEmpty(),
82-
recordTags = recordTags.filter { it.id in record.tagIds },
84+
recordTags = recordTags.filter { it.id in tagIds },
8385
)
8486
?.toByteArray()
8587
?.let { fileOutputStream?.write(it) }

data_local/src/main/java/com/example/util/simpletimetracker/data_local/file/IcsRepoImpl.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import java.util.Locale
2727
import java.util.TimeZone
2828
import javax.inject.Inject
2929
import androidx.core.net.toUri
30+
import com.example.util.simpletimetracker.domain.record.model.RecordBase
3031

3132
class IcsRepoImpl @Inject constructor(
3233
private val contentResolver: ContentResolver,
@@ -80,11 +81,12 @@ class IcsRepoImpl @Inject constructor(
8081
records
8182
.sortedBy { it.timeStarted }
8283
.forEach { record ->
84+
val tagIds = record.tags.map(RecordBase.Tag::tagId)
8385
toIcsString(
8486
record = record,
8587
recordType = recordTypes[record.typeId],
8688
categories = typeToCategories[record.typeId].orEmpty(),
87-
recordTags = recordTags.filter { it.id in record.tagIds },
89+
recordTags = recordTags.filter { it.id in tagIds },
8890
)
8991
?.toByteArray()
9092
?.let { fileOutputStream?.write(it) }

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ class GetDuplicatedRecordsInteractor @Inject constructor() {
5151
if (duplications.size < 2) return@forEach
5252
// This record will not be counted as duplication.
5353
val originalRecord = duplications.firstOrNull {
54-
it.tagIds.isNotEmpty() ||
54+
it.tags.isNotEmpty() ||
5555
it.comment.isNotEmpty()
5656
} ?: duplications.firstOrNull()
5757
duplications.forEach { record ->

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import com.example.util.simpletimetracker.domain.notifications.interactor.Activi
44
import com.example.util.simpletimetracker.domain.pomodoro.interactor.PomodoroStopInteractor
55
import com.example.util.simpletimetracker.domain.prefs.interactor.PrefsInteractor
66
import com.example.util.simpletimetracker.domain.notifications.interactor.UpdateExternalViewsInteractor
7+
import com.example.util.simpletimetracker.domain.record.model.RecordBase
78
import com.example.util.simpletimetracker.domain.record.model.RunningRecord
89
import java.util.concurrent.TimeUnit
910
import javax.inject.Inject
@@ -39,7 +40,7 @@ class RemoveRunningRecordMediator @Inject constructor(
3940
}
4041
activityStartedStoppedBroadcastInteractor.onActivityStopped(
4142
typeId = runningRecord.id,
42-
tagIds = runningRecord.tagIds,
43+
tagIds = runningRecord.tags.map(RecordBase.Tag::tagId),
4344
comment = runningRecord.comment,
4445
)
4546
remove(

domain/src/main/java/com/example/util/simpletimetracker/domain/record/model/RecordBase.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ sealed interface RecordBase {
88
val tags: List<Tag>
99

1010
val duration: Long get() = timeEnded - timeStarted
11-
val tagIds: List<Long> get() = tags.map { it.tagId } // TODO TAG not good, maps every time
1211

1312
data class Tag(
1413
val tagId: Long,

domain/src/main/java/com/example/util/simpletimetracker/domain/statistics/interactor/StatisticsTagInteractor.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,12 @@ class StatisticsTagInteractor @Inject constructor(
3232

3333
allRecords.forEach { record ->
3434
val isUntracked = record.typeIds.any { it == UNTRACKED_ITEM_ID }
35-
record.tagIds.forEach { tagId ->
36-
tags.getOrPut(tagId) { mutableListOf() }.add(record)
35+
record.tags.forEach { tag ->
36+
tags.getOrPut(tag.tagId) { mutableListOf() }.add(record)
3737
}
3838
if (isUntracked) {
3939
tags.getOrPut(UNTRACKED_ITEM_ID) { mutableListOf() }.add(record)
40-
} else if (addUncategorized && record.tagIds.isEmpty()) {
40+
} else if (addUncategorized && record.tags.isEmpty()) {
4141
tags.getOrPut(UNCATEGORIZED_ITEM_ID) { mutableListOf() }.add(record)
4242
}
4343
}

0 commit comments

Comments
 (0)