A fork of Simple Time Tracker with WearOS support. (Now integrated upstream)
0

Configure Feed

Select the types of activity you want to include in your feed.

fix card order dialog not showing initial order

razeeman (Apr 4, 2021, 10:43 AM +0300) e8ab32c2 2912128c

+54 -17
+1 -1
.github/workflows/github_actions.yml
··· 31 31 strategy: 32 32 fail-fast: false 33 33 matrix: 34 - api-level: [19, 21, 28, 29] 34 + api-level: [19, 28, 29] 35 35 36 36 steps: 37 37 - name: Check out code
+2 -2
app/src/androidTest/java/com/example/util/simpletimetracker/SettingsTest.kt
··· 336 336 val name3 = "Test3" 337 337 338 338 // Add activities 339 - testUtils.addActivity(name1) 340 - testUtils.addActivity(name2) 341 339 testUtils.addActivity(name3) 340 + testUtils.addActivity(name2) 341 + testUtils.addActivity(name1) 342 342 343 343 // Change settings 344 344 NavUtils.openSettingsScreen()
+2 -1
app/src/main/java/com/example/util/simpletimetracker/navigation/ScreenResolverImpl.kt
··· 9 9 import com.example.util.simpletimetracker.feature_change_record.view.ChangeRecordFragment 10 10 import com.example.util.simpletimetracker.feature_change_record_type.view.ChangeRecordTypeFragment 11 11 import com.example.util.simpletimetracker.feature_change_running_record.view.ChangeRunningRecordFragment 12 + import com.example.util.simpletimetracker.feature_dialogs.cardOrder.view.CardOrderDialogFragment 12 13 import com.example.util.simpletimetracker.feature_dialogs.dateTime.DateTimeDialogFragment 13 14 import com.example.util.simpletimetracker.feature_dialogs.duration.view.DurationDialogFragment 14 15 import com.example.util.simpletimetracker.feature_dialogs.standard.StandardDialogFragment ··· 132 133 Screen.CARD_ORDER_DIALOG -> 133 134 navController?.navigate( 134 135 R.id.cardOrderDialogFragment, 135 - null, 136 + CardOrderDialogFragment.createBundle(data), 136 137 null, 137 138 navExtras 138 139 )
+7 -4
domain/src/main/java/com/example/util/simpletimetracker/domain/interactor/RecordTypeInteractor.kt
··· 13 13 private val prefsInteractor: PrefsInteractor 14 14 ) { 15 15 16 - suspend fun getAll(): List<RecordType> { 16 + suspend fun getAll(cardOrder: CardOrder? = null): List<RecordType> { 17 17 return (recordTypeCacheRepo.getAll() 18 18 .takeIf(List<RecordType>::isNotEmpty) 19 19 ?: recordTypeRepo.getAll().also(recordTypeCacheRepo::addAll)) 20 - .let { sort(it) } 20 + .let { sort(cardOrder, it) } 21 21 } 22 22 23 23 suspend fun get(id: Long): RecordType? { ··· 48 48 recordTypeCacheRepo.clear() 49 49 } 50 50 51 - private suspend fun sort(records: List<RecordType>): List<RecordType> { 51 + private suspend fun sort( 52 + cardOrder: CardOrder?, 53 + records: List<RecordType> 54 + ): List<RecordType> { 52 55 return records 53 56 .let(::sortByName) 54 57 .let { 55 - when (prefsInteractor.getCardOrder()) { 58 + when (cardOrder ?: prefsInteractor.getCardOrder()) { 56 59 CardOrder.COLOR -> sortByColor(it) 57 60 CardOrder.MANUAL -> sortByManualOrder(it) 58 61 CardOrder.NAME -> it
+13 -2
feature_dialogs/src/main/java/com/example/util/simpletimetracker/feature_dialogs/cardOrder/view/CardOrderDialogFragment.kt
··· 17 17 import com.example.util.simpletimetracker.feature_dialogs.cardOrder.adapter.CardOrderAdapter 18 18 import com.example.util.simpletimetracker.feature_dialogs.cardOrder.di.CardOrderComponentProvider 19 19 import com.example.util.simpletimetracker.feature_dialogs.cardOrder.viewModel.CardOrderViewModel 20 + import com.example.util.simpletimetracker.navigation.params.CardOrderDialogParams 20 21 import com.google.android.flexbox.FlexDirection 21 22 import com.google.android.flexbox.FlexWrap 22 23 import com.google.android.flexbox.FlexboxLayoutManager ··· 34 35 private val viewModel: CardOrderViewModel by viewModels( 35 36 factoryProducer = { viewModelFactory } 36 37 ) 37 - 38 38 private val recordTypesAdapter: CardOrderAdapter by lazy { 39 39 CardOrderAdapter() 40 40 } 41 - 41 + private val extra: CardOrderDialogParams by lazy { 42 + arguments?.getParcelable(ARGS_PARAMS) ?: CardOrderDialogParams() 43 + } 42 44 private var behavior: BottomSheetBehavior<View>? = null 43 45 44 46 override fun onCreate(savedInstanceState: Bundle?) { ··· 126 128 } 127 129 128 130 private fun initViewModel(): Unit = with(viewModel) { 131 + extra = this@CardOrderDialogFragment.extra 129 132 recordTypes.observe(viewLifecycleOwner, recordTypesAdapter::replace) 130 133 } 131 134 ··· 135 138 136 139 private const val ITEM_SCALE_SELECTED = 1.1f 137 140 private const val ITEM_SCALE_DEFAULT = 1.0f 141 + 142 + private const val ARGS_PARAMS = "args_card_order_params" 143 + 144 + fun createBundle(data: Any?): Bundle = Bundle().apply { 145 + when (data) { 146 + is CardOrderDialogParams -> putParcelable(ARGS_PARAMS, data) 147 + } 148 + } 138 149 } 139 150 }
+4 -1
feature_dialogs/src/main/java/com/example/util/simpletimetracker/feature_dialogs/cardOrder/viewModel/CardOrderViewModel.kt
··· 11 11 import com.example.util.simpletimetracker.domain.interactor.PrefsInteractor 12 12 import com.example.util.simpletimetracker.domain.interactor.RecordTypeInteractor 13 13 import com.example.util.simpletimetracker.domain.model.CardOrder 14 + import com.example.util.simpletimetracker.navigation.params.CardOrderDialogParams 14 15 import kotlinx.coroutines.GlobalScope 15 16 import kotlinx.coroutines.launch 16 17 import java.util.Collections ··· 21 22 private val prefsInteractor: PrefsInteractor, 22 23 private val recordTypeViewDataMapper: RecordTypeViewDataMapper 23 24 ) : ViewModel() { 25 + 26 + lateinit var extra: CardOrderDialogParams 24 27 25 28 val recordTypes: LiveData<List<ViewHolderType>> by lazy { 26 29 return@lazy MutableLiveData<List<ViewHolderType>>().let { initial -> ··· 65 68 val numberOfCards: Int = prefsInteractor.getNumberOfCards() 66 69 val isDarkTheme = prefsInteractor.getDarkMode() 67 70 68 - return recordTypeInteractor.getAll() 71 + return recordTypeInteractor.getAll(extra.initialOrder) 69 72 .filter { !it.hidden } 70 73 .map { type -> recordTypeViewDataMapper.map(type, numberOfCards, isDarkTheme) } 71 74 .also { types = it }
+1 -1
feature_records/src/main/res/layout/records_container_fragment.xml
··· 42 42 43 43 <com.google.android.material.button.MaterialButton 44 44 android:id="@+id/btnRecordsContainerToday" 45 - style="@style/ContainerRangeMainButton" 45 + style="@style/ContainerRangeSelectableMainButton" 46 46 android:layout_width="0dp" 47 47 android:layout_height="wrap_content" 48 48 app:layout_constraintBottom_toBottomOf="parent"
+8 -4
feature_settings/src/main/java/com/example/util/simpletimetracker/feature_settings/viewModel/SettingsViewModel.kt
··· 17 17 import com.example.util.simpletimetracker.navigation.Notification 18 18 import com.example.util.simpletimetracker.navigation.Router 19 19 import com.example.util.simpletimetracker.navigation.Screen 20 + import com.example.util.simpletimetracker.navigation.params.CardOrderDialogParams 20 21 import com.example.util.simpletimetracker.navigation.params.DurationDialogParams 21 22 import com.example.util.simpletimetracker.navigation.params.FileChooserParams 22 23 import com.example.util.simpletimetracker.navigation.params.OpenMarketParams ··· 180 181 181 182 viewModelScope.launch { 182 183 if (newOrder == CardOrder.MANUAL) { 183 - openCardOrderDialog() 184 + openCardOrderDialog(prefsInteractor.getCardOrder()) 184 185 } 185 186 prefsInteractor.setCardOrder(newOrder) 186 187 updateCardOrderViewData() ··· 188 189 } 189 190 190 191 fun onCardOrderManualClick() { 191 - openCardOrderDialog() 192 + openCardOrderDialog(CardOrder.MANUAL) 192 193 } 193 194 194 195 fun onShowUntrackedClicked() { ··· 288 289 (themeChanged as MutableLiveData).value = false 289 290 } 290 291 291 - private fun openCardOrderDialog() { 292 - router.navigate(Screen.CARD_ORDER_DIALOG) 292 + private fun openCardOrderDialog(cardOrder: CardOrder) { 293 + router.navigate( 294 + Screen.CARD_ORDER_DIALOG, 295 + CardOrderDialogParams(cardOrder) 296 + ) 293 297 } 294 298 295 299 private fun onFileOpenError() {
+6 -1
navigation/src/main/java/com/example/util/simpletimetracker/navigation/ScreenResolver.kt
··· 4 4 5 5 interface ScreenResolver { 6 6 7 - fun navigate(navController: NavController?, screen: Screen, data: Any?, sharedElements: Map<Any, String>?) 7 + fun navigate( 8 + navController: NavController?, 9 + screen: Screen, 10 + data: Any?, 11 + sharedElements: Map<Any, String>? 12 + ) 8 13 }
+10
navigation/src/main/java/com/example/util/simpletimetracker/navigation/params/CardOrderDialogParams.kt
··· 1 + package com.example.util.simpletimetracker.navigation.params 2 + 3 + import android.os.Parcelable 4 + import com.example.util.simpletimetracker.domain.model.CardOrder 5 + import kotlinx.android.parcel.Parcelize 6 + 7 + @Parcelize 8 + data class CardOrderDialogParams( 9 + val initialOrder: CardOrder = CardOrder.MANUAL 10 + ) : Parcelable