Skip to content

Commit bc2542a

Browse files
committed
improve untagged and uncategorized buttons
1 parent cae25d5 commit bc2542a

4 files changed

Lines changed: 41 additions & 20 deletions

File tree

features/feature_change_record/src/main/java/com/example/util/simpletimetracker/feature_change_record/viewModel/ChangeRecordBaseViewModel.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -876,7 +876,7 @@ abstract class ChangeRecordBaseViewModel(
876876
showAddButton = true,
877877
showHint = true,
878878
showArchived = false,
879-
showUntaggedButton = true,
879+
showUntaggedButton = newTags.isNotEmpty(),
880880
showAllTagsButton = true,
881881
).let {
882882
ChangeRecordTagsViewData(

features/feature_change_record_type/src/main/java/com/example/util/simpletimetracker/feature_change_record_type/interactor/ChangeRecordTypeViewDataInteractor.kt

Lines changed: 32 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package com.example.util.simpletimetracker.feature_change_record_type.interactor
33
import com.example.util.simpletimetracker.core.mapper.CategoryViewDataMapper
44
import com.example.util.simpletimetracker.core.mapper.CommonViewDataMapper
55
import com.example.util.simpletimetracker.domain.category.interactor.CategoryInteractor
6+
import com.example.util.simpletimetracker.domain.extension.addBetweenEach
67
import com.example.util.simpletimetracker.domain.prefs.interactor.PrefsInteractor
78
import com.example.util.simpletimetracker.feature_base_adapter.ViewHolderType
89
import com.example.util.simpletimetracker.feature_base_adapter.divider.DividerViewData
@@ -25,35 +26,49 @@ class ChangeRecordTypeViewDataInteractor @Inject constructor(
2526
return if (categories.isNotEmpty()) {
2627
val selected = categories.filter { it.id in selectedCategories }
2728
val available = categories.filter { it.id !in selectedCategories }
28-
val viewData = mutableListOf<ViewHolderType>()
2929

30-
categoryViewDataMapper.mapToCategoryHint().let(viewData::add)
30+
// Main hint
31+
val hintData = listOf(categoryViewDataMapper.mapToCategoryHint())
3132

32-
DividerViewData("divider_hint".hashCode().toLong())
33-
.let(viewData::add)
34-
35-
commonViewDataMapper.mapSelectedHint(
36-
isEmpty = selected.isEmpty(),
37-
).let(viewData::add)
38-
39-
selected.map {
33+
// Selected
34+
val selectedData = mutableListOf<ViewHolderType>()
35+
selectedData += commonViewDataMapper.mapSelectedHint(isEmpty = selected.isEmpty())
36+
selectedData += selected.map {
4037
categoryViewDataMapper.mapCategory(
4138
category = it,
4239
isDarkTheme = isDarkTheme,
4340
)
44-
}.let(viewData::addAll)
45-
46-
DividerViewData("divider_available".hashCode().toLong())
47-
.let(viewData::add)
41+
}
4842

49-
available.map {
43+
// Available
44+
val availableData = available.map {
5045
categoryViewDataMapper.mapCategory(
5146
category = it,
5247
isDarkTheme = isDarkTheme,
5348
)
54-
}.let(viewData::addAll)
49+
}
50+
51+
// Buttons
52+
val buttonsViewData = mutableListOf<ViewHolderType>()
53+
if (selected.isNotEmpty()) {
54+
buttonsViewData += categoryViewDataMapper.mapToUncategorizedItem(
55+
isFiltered = false,
56+
isDarkTheme = isDarkTheme,
57+
)
58+
}
59+
buttonsViewData += categoryViewDataMapper.mapToTypeTagAddItem(isDarkTheme)
5560

56-
categoryViewDataMapper.mapToTypeTagAddItem(isDarkTheme).let(viewData::add)
61+
// All
62+
val viewData = listOf(
63+
hintData,
64+
selectedData,
65+
availableData,
66+
buttonsViewData,
67+
).filter {
68+
it.isNotEmpty()
69+
}.addBetweenEach { index ->
70+
listOf(DividerViewData(index.toLong()))
71+
}.flatten()
5772

5873
ChangeRecordTypeCategoriesViewData(
5974
selectedCount = selected.size,

features/feature_change_record_type/src/main/java/com/example/util/simpletimetracker/feature_change_record_type/viewModel/ChangeRecordTypeViewModel.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import com.example.util.simpletimetracker.core.mapper.RecordTypeViewDataMapper
1818
import com.example.util.simpletimetracker.core.mapper.TimeMapper
1919
import com.example.util.simpletimetracker.core.repo.ResourceRepo
2020
import com.example.util.simpletimetracker.core.view.ViewChooserStateDelegate
21+
import com.example.util.simpletimetracker.domain.base.UNCATEGORIZED_ITEM_ID
2122
import com.example.util.simpletimetracker.domain.category.interactor.RecordTypeCategoryInteractor
2223
import com.example.util.simpletimetracker.domain.color.model.AppColor
2324
import com.example.util.simpletimetracker.domain.extension.addOrRemove
@@ -178,12 +179,17 @@ class ChangeRecordTypeViewModel @Inject constructor(
178179

179180
fun onCategoryClick(item: CategoryViewData) {
180181
viewModelScope.launch {
181-
newCategories.addOrRemove(item.id)
182+
if (item.id == UNCATEGORIZED_ITEM_ID) {
183+
newCategories.clear()
184+
} else {
185+
newCategories.addOrRemove(item.id)
186+
}
182187
updateCategoriesViewData()
183188
}
184189
}
185190

186191
fun onCategoryLongClick(item: CategoryViewData, sharedElements: Pair<Any, String>) {
192+
if (item.id == UNCATEGORIZED_ITEM_ID) return
187193
router.navigate(
188194
data = ChangeCategoryFromChangeActivityParams(
189195
ChangeTagData.Change(

features/feature_change_shortcut/src/main/java/com/example/util/simpletimetracker/feature_change_shortcut/viewModel/ChangeShortcutViewModel.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -387,7 +387,7 @@ class ChangeShortcutViewModel @Inject constructor(
387387
showAddButton = false,
388388
showHint = true,
389389
showArchived = false,
390-
showUntaggedButton = true,
390+
showUntaggedButton = recordTags.isNotEmpty(),
391391
showAllTagsButton = false,
392392
)
393393
tags.set(data.data)

0 commit comments

Comments
 (0)