Skip to content

Commit 165a552

Browse files
committed
fix manual card ordering
1 parent eb57802 commit 165a552

File tree

4 files changed

+12
-32
lines changed

4 files changed

+12
-32
lines changed

app/src/androidTest/java/com/example/util/simpletimetracker/utils/NavUtils.kt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,12 @@ import android.widget.TimePicker
44
import androidx.test.espresso.Espresso.closeSoftKeyboard
55
import androidx.test.espresso.Espresso.onView
66
import androidx.test.espresso.action.ViewActions.click
7-
import androidx.test.espresso.contrib.PickerActions
87
import androidx.test.espresso.contrib.PickerActions.setTime
9-
import androidx.test.espresso.matcher.ViewMatchers
108
import androidx.test.espresso.matcher.ViewMatchers.hasDescendant
119
import androidx.test.espresso.matcher.ViewMatchers.withClassName
1210
import androidx.test.espresso.matcher.ViewMatchers.withId
1311
import androidx.test.espresso.matcher.ViewMatchers.withText
1412
import com.example.util.simpletimetracker.R
15-
import org.hamcrest.CoreMatchers
1613
import org.hamcrest.CoreMatchers.equalTo
1714

1815
object NavUtils {

core/src/main/java/com/example/util/simpletimetracker/core/extension/ViewExtensions.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ fun SeekBar.onProgressChanged(func: (Int) -> Unit) {
113113
fun RecyclerView.onItemMoved(
114114
onSelected: (RecyclerView.ViewHolder?) -> Unit = {},
115115
onClear: (RecyclerView.ViewHolder) -> Unit = {},
116-
onMoved: (Int, Int) -> Unit
116+
onMoved: (Int, Int) -> Unit = { _, _ -> }
117117
) {
118118
val dragDirections =
119119
ItemTouchHelper.DOWN or ItemTouchHelper.UP or ItemTouchHelper.START or ItemTouchHelper.END

feature_dialogs/src/main/java/com/example/util/simpletimetracker/feature_dialogs/cardOrder/view/CardOrderDialogFragment.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ class CardOrderDialogFragment : BaseBottomSheetFragment<Binding>() {
5050

5151
override fun onDismiss(dialog: DialogInterface) {
5252
super.onDismiss(dialog)
53-
viewModel.onDismiss()
53+
viewModel.onDismiss(recordTypesAdapter.currentList)
5454
}
5555

5656
override fun initDialog() {
@@ -73,7 +73,6 @@ class CardOrderDialogFragment : BaseBottomSheetFragment<Binding>() {
7373
binding.rvCardOrderContainer.onItemMoved(
7474
onSelected = ::setItemSelected,
7575
onClear = ::setItemUnselected,
76-
onMoved = viewModel::onCardMoved
7776
)
7877
}
7978

feature_dialogs/src/main/java/com/example/util/simpletimetracker/feature_dialogs/cardOrder/viewModel/CardOrderViewModel.kt

Lines changed: 10 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ import com.example.util.simpletimetracker.domain.model.CardOrder
1414
import com.example.util.simpletimetracker.navigation.params.CardOrderDialogParams
1515
import kotlinx.coroutines.GlobalScope
1616
import kotlinx.coroutines.launch
17-
import java.util.Collections
1817
import javax.inject.Inject
1918

2019
class CardOrderViewModel @Inject constructor(
@@ -35,33 +34,19 @@ class CardOrderViewModel @Inject constructor(
3534
}
3635
}
3736

38-
private var types: List<RecordTypeViewData> = emptyList()
37+
fun onDismiss(newList: List<ViewHolderType>) = GlobalScope.launch {
38+
val types = newList.filterIsInstance<RecordTypeViewData>()
3939

40-
fun onCardMoved(fromPosition: Int, toPosition: Int) {
41-
if (fromPosition < toPosition) {
42-
for (i in fromPosition until toPosition) {
43-
Collections.swap(types, i, i + 1)
40+
types
41+
.takeIf(List<RecordTypeViewData>::isNotEmpty)
42+
?.mapIndexed { index, recordTypeViewData ->
43+
recordTypeViewData.id to index.toLong()
4444
}
45-
} else {
46-
for (i in fromPosition downTo toPosition + 1) {
47-
Collections.swap(types, i, i - 1)
45+
?.toMap()
46+
?.let {
47+
prefsInteractor.setCardOrder(CardOrder.MANUAL)
48+
prefsInteractor.setCardOrderManual(it)
4849
}
49-
}
50-
}
51-
52-
fun onDismiss() {
53-
GlobalScope.launch {
54-
types
55-
.takeIf(List<RecordTypeViewData>::isNotEmpty)
56-
?.mapIndexed { index, recordTypeViewData ->
57-
recordTypeViewData.id to index.toLong()
58-
}
59-
?.toMap()
60-
?.let {
61-
prefsInteractor.setCardOrder(CardOrder.MANUAL)
62-
prefsInteractor.setCardOrderManual(it)
63-
}
64-
}
6550
}
6651

6752
private suspend fun loadRecordTypes(): List<ViewHolderType> {
@@ -72,7 +57,6 @@ class CardOrderViewModel @Inject constructor(
7257
.filter { !it.hidden }
7358
.takeUnless { it.isEmpty() }
7459
?.map { type -> recordTypeViewDataMapper.map(type, numberOfCards, isDarkTheme) }
75-
?.also { types = it }
7660
?: recordTypeViewDataMapper.mapToEmpty()
7761
}
7862
}

0 commit comments

Comments
 (0)