|
|
@@ -3,6 +3,7 @@ package com.mrozon.feature_measure.presentation
|
|
|
import android.content.Context
|
|
|
import android.os.Bundle
|
|
|
import android.view.*
|
|
|
+import androidx.core.app.ActivityCompat
|
|
|
import androidx.fragment.app.viewModels
|
|
|
import androidx.lifecycle.Observer
|
|
|
import androidx.lifecycle.ViewModelProvider
|
|
|
@@ -14,9 +15,8 @@ import com.mrozon.feature_measure.R
|
|
|
import com.mrozon.feature_measure.databinding.FragmentEditMeasureBinding
|
|
|
import com.mrozon.feature_measure.di.TabMeasureFragmentComponent
|
|
|
import com.mrozon.utils.base.BaseFragment
|
|
|
-import com.mrozon.utils.extension.hideKeyboard
|
|
|
-import com.mrozon.utils.extension.isActiveNetwork
|
|
|
-import com.mrozon.utils.extension.toDateString
|
|
|
+import com.mrozon.utils.extension.*
|
|
|
+import com.mrozon.utils.network.Result
|
|
|
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
|
|
import kotlinx.coroutines.FlowPreview
|
|
|
import timber.log.Timber
|
|
|
@@ -45,6 +45,7 @@ class EditMeasureFragment: BaseFragment<FragmentEditMeasureBinding>() {
|
|
|
return super.onCreateView(inflater, container, savedInstanceState)
|
|
|
}
|
|
|
|
|
|
+ @ExperimentalCoroutinesApi
|
|
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
|
|
super.onViewCreated(view, savedInstanceState)
|
|
|
arguments?.let {
|
|
|
@@ -90,12 +91,20 @@ class EditMeasureFragment: BaseFragment<FragmentEditMeasureBinding>() {
|
|
|
showError(e.message!!)
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ binding?.tilComment?.editText?.offer(viewModel.commentChannel)
|
|
|
+ binding?.tilMeasureValue?.editText?.offer(viewModel.measureValueChannel)
|
|
|
}
|
|
|
|
|
|
@ExperimentalCoroutinesApi
|
|
|
@FlowPreview
|
|
|
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
|
|
inflater.inflate(R.menu.add_measure_menu, menu)
|
|
|
+ val currentId = requireArguments().getLong("id", 0)
|
|
|
+ val deleteMenuItem = menu.findItem(R.id.deleteMeasure)
|
|
|
+ deleteMenuItem.isVisible = currentId>0
|
|
|
+ val saveMenuItem = menu.findItem(R.id.saveMeasure)
|
|
|
+ saveMenuItem.isVisible = binding?.tilMeasureValue?.error == null && binding?.tilMeasureValue?.editText?.text?.isNotEmpty()!!
|
|
|
return super.onCreateOptionsMenu(menu, inflater)
|
|
|
}
|
|
|
|
|
|
@@ -106,10 +115,21 @@ class EditMeasureFragment: BaseFragment<FragmentEditMeasureBinding>() {
|
|
|
showError(getString(R.string.network_inactive))
|
|
|
return false
|
|
|
}
|
|
|
+ when(item.itemId){
|
|
|
+ R.id.saveMeasure -> {
|
|
|
+ val currentId = requireArguments().getLong("id", 0)
|
|
|
+ viewModel.saveMeasure(currentId)
|
|
|
+ }
|
|
|
+ R.id.deleteMeasure -> {
|
|
|
+ viewModel.deleteMeasure()
|
|
|
+ }
|
|
|
+ }
|
|
|
return false
|
|
|
}
|
|
|
|
|
|
|
|
|
+ @FlowPreview
|
|
|
+ @ExperimentalCoroutinesApi
|
|
|
override fun subscribeUi() {
|
|
|
viewModel.measureType.observe(viewLifecycleOwner, Observer { measureType ->
|
|
|
measureType?.let {
|
|
|
@@ -125,5 +145,40 @@ class EditMeasureFragment: BaseFragment<FragmentEditMeasureBinding>() {
|
|
|
binding?.tvMeasureAddedDate?.text = it.toDateString("EEE, d MMM YY HH:mm:ss")
|
|
|
}
|
|
|
})
|
|
|
+ viewModel.measure.observe(viewLifecycleOwner, Observer { event ->
|
|
|
+ event.peekContent().let { result ->
|
|
|
+ when (result.status) {
|
|
|
+ Result.Status.LOADING -> {
|
|
|
+ binding?.progressBar?.visible(true)
|
|
|
+ }
|
|
|
+ Result.Status.SUCCESS -> {
|
|
|
+ binding?.progressBar?.visible(false)
|
|
|
+ val measure = result.data
|
|
|
+ measure?.let {
|
|
|
+ binding?.tilComment?.editText?.setText(measure.comment)
|
|
|
+ var measureValue = measure.value1
|
|
|
+ if(measure.value2.isNotEmpty()) {
|
|
|
+ measureValue +="/"+measure.value2
|
|
|
+ }
|
|
|
+ binding?.tilMeasureValue?.editText?.setText(measureValue)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ Result.Status.ERROR -> {
|
|
|
+ binding?.progressBar?.visible(false)
|
|
|
+ showError(result.message!!)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ viewModel.correctMeasureValue.observe(viewLifecycleOwner, Observer {correct ->
|
|
|
+ correct?.let {
|
|
|
+ if(correct) {
|
|
|
+ binding?.tilMeasureValue?.error = null
|
|
|
+ } else {
|
|
|
+ binding?.tilMeasureValue?.error = getString(R.string.error_value, viewModel.measureType.value?.hint)
|
|
|
+ }
|
|
|
+ ActivityCompat.invalidateOptionsMenu(activity)
|
|
|
+ }
|
|
|
+ })
|
|
|
}
|
|
|
}
|