From c0d7d59817d7aec3dedba71b0c638fd6103e5047 Mon Sep 17 00:00:00 2001 From: johan12345 Date: Sun, 21 Aug 2022 18:50:23 +0200 Subject: [PATCH] work around double call of onViewCreated in MaterialDialogFragment --- .../net/vonforst/evmap/fragment/DataSourceSelectDialog.kt | 2 +- .../java/net/vonforst/evmap/fragment/MultiSelectDialog.kt | 2 +- .../updatedialogs/OpensourceDonationsDialogFragment.kt | 4 +--- app/src/main/java/net/vonforst/evmap/ui/Dialogs.kt | 6 ++++-- .../java/net/vonforst/evmap/viewmodel/MapViewModel.kt | 8 +++++++- 5 files changed, 14 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/net/vonforst/evmap/fragment/DataSourceSelectDialog.kt b/app/src/main/java/net/vonforst/evmap/fragment/DataSourceSelectDialog.kt index 2456fd50..c1ad3ceb 100644 --- a/app/src/main/java/net/vonforst/evmap/fragment/DataSourceSelectDialog.kt +++ b/app/src/main/java/net/vonforst/evmap/fragment/DataSourceSelectDialog.kt @@ -45,7 +45,7 @@ class DataSourceSelectDialog : MaterialDialogFragment() { private lateinit var prefs: PreferenceDataSource - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + override fun initView(view: View, savedInstanceState: Bundle?) { val args = requireArguments() binding.btnCancel.visibility = if (args.getBoolean("cancel_enabled")) View.VISIBLE else View.GONE diff --git a/app/src/main/java/net/vonforst/evmap/fragment/MultiSelectDialog.kt b/app/src/main/java/net/vonforst/evmap/fragment/MultiSelectDialog.kt index 7e0e8085..32f3e0b5 100644 --- a/app/src/main/java/net/vonforst/evmap/fragment/MultiSelectDialog.kt +++ b/app/src/main/java/net/vonforst/evmap/fragment/MultiSelectDialog.kt @@ -53,7 +53,7 @@ class MultiSelectDialog : MaterialDialogFragment() { setFullSize(maxWidthDp = 500) } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + override fun initView(view: View, savedInstanceState: Bundle?) { val args = requireArguments() val data = args.getSerializable("data") as HashMap val selected = args.getSerializable("selected") as HashSet diff --git a/app/src/main/java/net/vonforst/evmap/fragment/updatedialogs/OpensourceDonationsDialogFragment.kt b/app/src/main/java/net/vonforst/evmap/fragment/updatedialogs/OpensourceDonationsDialogFragment.kt index 6193170e..b9221382 100644 --- a/app/src/main/java/net/vonforst/evmap/fragment/updatedialogs/OpensourceDonationsDialogFragment.kt +++ b/app/src/main/java/net/vonforst/evmap/fragment/updatedialogs/OpensourceDonationsDialogFragment.kt @@ -22,9 +22,7 @@ class OpensourceDonationsDialogFragment : MaterialDialogFragment() { return binding.root } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - + override fun initView(view: View, savedInstanceState: Bundle?) { val prefs = PreferenceDataSource(requireContext()) binding.btnOk.setOnClickListener { prefs.opensourceDonationsDialogShown = true diff --git a/app/src/main/java/net/vonforst/evmap/ui/Dialogs.kt b/app/src/main/java/net/vonforst/evmap/ui/Dialogs.kt index a9fb0734..88327c16 100644 --- a/app/src/main/java/net/vonforst/evmap/ui/Dialogs.kt +++ b/app/src/main/java/net/vonforst/evmap/ui/Dialogs.kt @@ -63,7 +63,7 @@ fun showEditTextDialog( * https://github.com/material-components/material-components-android/issues/540 and * https://dev.to/bhullnatik/how-to-use-material-dialogs-with-dialogfragment-28i1 */ -open class MaterialDialogFragment : AppCompatDialogFragment() { +abstract class MaterialDialogFragment : AppCompatDialogFragment() { private lateinit var dialogView: View override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { @@ -73,10 +73,12 @@ open class MaterialDialogFragment : AppCompatDialogFragment() { setView(dialogView) }.create() - onViewCreated(dialogView, savedInstanceState) + initView(dialogView, savedInstanceState) return dialog } + abstract fun initView(view: View, savedInstanceState: Bundle?) + override fun getView(): View { return dialogView } diff --git a/app/src/main/java/net/vonforst/evmap/viewmodel/MapViewModel.kt b/app/src/main/java/net/vonforst/evmap/viewmodel/MapViewModel.kt index b47b8d63..958ffd06 100644 --- a/app/src/main/java/net/vonforst/evmap/viewmodel/MapViewModel.kt +++ b/app/src/main/java/net/vonforst/evmap/viewmodel/MapViewModel.kt @@ -6,8 +6,10 @@ import androidx.lifecycle.* import com.car2go.maps.AnyMap import com.car2go.maps.model.LatLng import com.car2go.maps.model.LatLngBounds +import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import kotlinx.parcelize.Parcelize import net.vonforst.evmap.api.ChargepointApi import net.vonforst.evmap.api.availability.ChargeLocationStatus @@ -277,7 +279,11 @@ class MapViewModel(application: Application, private val state: SavedStateHandle } suspend fun copyFiltersToCustom() { - filterStatus.value?.let { db.filterValueDao().copyFiltersToCustom(it, prefs.dataSource) } + filterStatus.value?.let { + withContext(Dispatchers.IO) { + db.filterValueDao().copyFiltersToCustom(it, prefs.dataSource) + } + } } fun setMapType(type: AnyMap.Type) {