Sfoglia il codice sorgente

add navigation for back to list measure

MrOzOn 5 anni fa
parent
commit
b3995fc228

+ 4 - 2
app/src/main/java/com/mrozon/healthdiary/navigation/EditMeasureNavigatorImpl.kt

@@ -1,5 +1,6 @@
 package com.mrozon.healthdiary.navigation
 
+import androidx.core.os.bundleOf
 import androidx.navigation.NavController
 import com.mrozon.core_api.navigation.EditMeasureNavigator
 import com.mrozon.core_api.navigation.EditPersonNavigator
@@ -9,7 +10,8 @@ import javax.inject.Inject
 class EditMeasureNavigatorImpl @Inject constructor()
     : EditMeasureNavigator {
 
-    override fun navigateToListMeasure(navController: NavController) {
-        navController.navigate(R.id.action_editMeasureFragment_to_listMeasureFragment)
+    override fun navigateToListMeasure(navController: NavController, id: Long, measureTypeId: Long) {
+        val bundle = bundleOf("id" to id, "measureTypeId" to measureTypeId)
+        navController.navigate(R.id.action_editMeasureFragment_to_listMeasureFragment, bundle)
     }
 }

+ 7 - 11
app/src/main/res/navigation/nav_graph.xml

@@ -142,16 +142,6 @@
         android:label="TabMeasureFragment" >
         <action
             android:id="@+id/action_tabMeasureFragment_to_editMeasureFragment"
-            app:destination="@id/editMeasureFragment" />
-    </fragment>
-
-    <fragment
-        android:id="@+id/listMeasureFragment"
-        android:name="com.mrozon.feature_measure.presentation.ListMeasureFragment"
-        tools:layout="@layout/fragment_list_measure"
-        android:label="ListMeasureFragment" >
-        <action
-            android:id="@+id/action_listMeasureFragment_to_editMeasureFragment"
             app:destination="@id/editMeasureFragment"
             app:enterAnim="@anim/slide_in_right"
             app:exitAnim="@anim/slide_out_left"
@@ -159,6 +149,12 @@
             app:popExitAnim="@anim/slide_out_right"/>
     </fragment>
 
+    <fragment
+        android:id="@+id/listMeasureFragment"
+        android:name="com.mrozon.feature_measure.presentation.ListMeasureFragment"
+        tools:layout="@layout/fragment_list_measure"
+        android:label="ListMeasureFragment" />
+
     <fragment
         android:id="@+id/editMeasureFragment"
         android:name="com.mrozon.feature_measure.presentation.EditMeasureFragment"
@@ -178,7 +174,7 @@
             app:argType="long" />
         <action
             android:id="@+id/action_editMeasureFragment_to_listMeasureFragment"
-            app:destination="@id/listMeasureFragment"
+            app:destination="@id/tabMeasureFragment"
             app:enterAnim="@anim/slide_in_right"
             app:exitAnim="@anim/slide_out_left"
             app:popEnterAnim="@anim/slide_in_left"

+ 1 - 1
core_api/src/main/java/com/mrozon/core_api/db/dao/MeasureDao.kt

@@ -9,7 +9,7 @@ import kotlinx.coroutines.flow.Flow
 @Dao
 interface MeasureDao {
 
-    @Query("SELECT * FROM measure_table WHERE measure_person=:personId AND measure_mtype=:measureTypeId ORDER BY measure_value_added LIMIT 100")
+    @Query("SELECT * FROM measure_table WHERE measure_person=:personId AND measure_mtype=:measureTypeId ORDER BY measure_value_added DESC LIMIT 100")
     fun getMeasures(personId: Long, measureTypeId: Long): List<MeasureDb>
 
     @Query("SELECT * FROM measure_table WHERE measure_id=:id LIMIT 1")

+ 1 - 1
core_api/src/main/java/com/mrozon/core_api/navigation/EditMeasureNavigator.kt

@@ -4,5 +4,5 @@ import androidx.navigation.NavController
 
 interface EditMeasureNavigator {
 
-    fun navigateToListMeasure(navController: NavController)
+    fun navigateToListMeasure(navController: NavController, id: Long, measureTypeId: Long)
 }

+ 8 - 2
feature_measure/src/main/java/com/mrozon/feature_measure/presentation/EditMeasureFragment.kt

@@ -7,10 +7,13 @@ import androidx.core.app.ActivityCompat
 import androidx.fragment.app.viewModels
 import androidx.lifecycle.Observer
 import androidx.lifecycle.ViewModelProvider
+import androidx.navigation.fragment.findNavController
 import com.google.android.material.datepicker.MaterialDatePicker
 import com.google.android.material.timepicker.MaterialTimePicker
 import com.google.android.material.timepicker.MaterialTimePicker.INPUT_MODE_CLOCK
 import com.google.android.material.timepicker.TimeFormat
+import com.mrozon.core_api.navigation.EditMeasureNavigator
+import com.mrozon.core_api.navigation.ListMeasureNavigator
 import com.mrozon.feature_measure.R
 import com.mrozon.feature_measure.databinding.FragmentEditMeasureBinding
 import com.mrozon.feature_measure.di.TabMeasureFragmentComponent
@@ -29,6 +32,9 @@ class EditMeasureFragment: BaseFragment<FragmentEditMeasureBinding>() {
     @Inject
     lateinit var viewModelFactory: ViewModelProvider.Factory
 
+    @Inject
+    lateinit var navigator: EditMeasureNavigator
+
     private val viewModel by viewModels<EditMeasureFragmentViewModel> { viewModelFactory }
 
     override fun onAttach(context: Context) {
@@ -188,8 +194,8 @@ class EditMeasureFragment: BaseFragment<FragmentEditMeasureBinding>() {
                     }
                     Result.Status.SUCCESS -> {
                         binding?.progressBar?.visible(false)
-                        //TODO go to list measures
-                        show("Success!")
+                        navigator.navigateToListMeasure(findNavController(), viewModel.person.value?.id?:0, viewModel.measureType.value?.id?:0)
+
                     }
                     Result.Status.ERROR -> {
                         binding?.progressBar?.visible(false)

+ 9 - 0
feature_measure/src/main/java/com/mrozon/feature_measure/presentation/TabMeasureFragment.kt

@@ -117,6 +117,15 @@ class TabMeasureFragment: BaseFragment<FragmentTabMeasureBinding>() {
                                     .build()
                                 disposables.plus(ImageLoader(requireContext()).enqueue(request))
                             }.attach()
+                            val measureTypeId = requireArguments().getLong("measureTypeId", 0)
+                            if(measureTypeId>0){
+                                for ((index, value) in measureTypes.withIndex()) {
+                                    if (value.id==measureTypeId) {
+                                        binding?.viewpager?.currentItem = index
+                                        break
+                                    }
+                                }
+                            }
                         }
                     }
                     Result.Status.ERROR -> {