Skip to content

Commit 30cd135

Browse files
committed
Move shared favourite logic to interactor
1 parent 5338383 commit 30cd135

File tree

4 files changed

+16
-16
lines changed

4 files changed

+16
-16
lines changed

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

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -126,12 +126,8 @@ class RecordCommentSearchViewDataInteractor @Inject constructor(
126126
private suspend fun getFavouriteData(
127127
typeId: Long,
128128
): List<ViewHolderType> {
129-
val (included, excluded) = recordTypeToFavouriteCommentInteractor.getAll()
130-
.partition { it.recordTypeId == typeId }
131-
val includedComments = included.map { it.commentId }
132-
val excludedComments = excluded.map { it.commentId }
133-
return favouriteCommentInteractor.getAll()
134-
.filter { includedComments.contains(it.id) || !excludedComments.contains(it.id) }
129+
val comments = favouriteCommentInteractor.getAll()
130+
return recordTypeToFavouriteCommentInteractor.filterFavourites(typeId, comments)
135131
.map { RecordCommentViewData.Favourite(it.comment) }
136132
}
137133

domain/src/main/java/com/example/util/simpletimetracker/domain/favourite/interactor/FavouriteCommentInteractor.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@ package com.example.util.simpletimetracker.domain.favourite.interactor
22

33
import com.example.util.simpletimetracker.domain.favourite.repo.FavouriteCommentRepo
44
import com.example.util.simpletimetracker.domain.favourite.model.FavouriteComment
5+
import com.example.util.simpletimetracker.domain.favourite.repo.RecordTypeToFavouriteCommentRepo
56
import java.util.Locale
67
import javax.inject.Inject
78

89
class FavouriteCommentInteractor @Inject constructor(
910
private val repo: FavouriteCommentRepo,
11+
private val recordTypeRepo: RecordTypeToFavouriteCommentRepo,
1012
) {
1113

1214
suspend fun getAll(): List<FavouriteComment> {
@@ -23,6 +25,7 @@ class FavouriteCommentInteractor @Inject constructor(
2325

2426
suspend fun remove(id: Long) {
2527
repo.remove(id)
28+
recordTypeRepo.removeAll(id)
2629
}
2730

2831
fun sort(

domain/src/main/java/com/example/util/simpletimetracker/domain/favourite/interactor/RecordTypeToFavouriteCommentInteractor.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.example.util.simpletimetracker.domain.favourite.interactor
22

3+
import com.example.util.simpletimetracker.domain.favourite.model.FavouriteComment
34
import com.example.util.simpletimetracker.domain.favourite.model.RecordTypeToFavouriteComment
45
import com.example.util.simpletimetracker.domain.favourite.repo.RecordTypeToFavouriteCommentRepo
56
import javax.inject.Inject
@@ -31,4 +32,11 @@ class RecordTypeToFavouriteCommentInteractor @Inject constructor(
3132
suspend fun removeTypes(commentId: Long, typeIds: List<Long>) {
3233
repo.removeTypes(commentId, typeIds)
3334
}
35+
36+
suspend fun filterFavourites(typeId: Long, comments: List<FavouriteComment>): List<FavouriteComment> {
37+
val (included, excluded) = getAll().partition { it.recordTypeId == typeId }
38+
val includedIds = included.map { it.commentId }
39+
val excludedIds = excluded.map { it.commentId }
40+
return comments.filter { includedIds.contains(it.id) || !excludedIds.contains(it.id) }
41+
}
3442
}

features/feature_change_record/src/main/java/com/example/util/simpletimetracker/feature_change_record/interactor/ChangeRecordViewDataInteractor.kt

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -66,16 +66,9 @@ class ChangeRecordViewDataInteractor @Inject constructor(
6666
val isDarkTheme = prefsInteractor.getDarkMode()
6767

6868
val favouriteComment = favouriteCommentInteractor.get(comment)
69-
val isFavourite = if (favouriteComment == null) false else {
70-
val (included, excluded) = recordTypeToFavouriteCommentInteractor.getAll()
71-
.partition { it.recordTypeId == typeId }
72-
val includedComments = included.map { it.commentId }
73-
val excludedComments = excluded.map { it.commentId }
74-
(
75-
includedComments.contains(favouriteComment.id) ||
76-
!excludedComments.contains(favouriteComment.id)
77-
)
78-
}
69+
val isFavourite = if (favouriteComment == null) false else
70+
recordTypeToFavouriteCommentInteractor
71+
.filterFavourites(typeId, listOf(favouriteComment)).isNotEmpty()
7972

8073
ChangeRecordCommentFieldViewData(
8174
// Only one at the time.

0 commit comments

Comments
 (0)