From d5c836b8b5f4d6f63f63d13720f0684a4e5911b2 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Mon, 17 Nov 2025 10:06:01 +0100 Subject: [PATCH] Should prevent crash that may happen after picking ringtone if settings fragment was destroyed while new ringtone was being picked --- .../settings/fragment/SettingsFragment.kt | 19 ++++--------------- .../layout/settings_developer_fragment.xml | 3 +-- 2 files changed, 5 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/org/linphone/ui/main/settings/fragment/SettingsFragment.kt b/app/src/main/java/org/linphone/ui/main/settings/fragment/SettingsFragment.kt index fa915e656..90c3fbb65 100644 --- a/app/src/main/java/org/linphone/ui/main/settings/fragment/SettingsFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/settings/fragment/SettingsFragment.kt @@ -30,8 +30,8 @@ import android.view.ViewGroup import android.widget.AdapterView import android.widget.ArrayAdapter import androidx.annotation.UiThread -import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController +import androidx.navigation.navGraphViewModels import org.linphone.R import org.linphone.compatibility.Compatibility import org.linphone.core.tools.Log @@ -54,7 +54,9 @@ class SettingsFragment : GenericMainFragment() { private lateinit var binding: SettingsFragmentBinding - private lateinit var viewModel: SettingsViewModel + private val viewModel: SettingsViewModel by navGraphViewModels( + R.id.main_nav_graph + ) private val sortContactsByListener = object : AdapterView.OnItemSelectedListener { override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) { @@ -138,8 +140,6 @@ class SettingsFragment : GenericMainFragment() { postponeEnterTransition() super.onViewCreated(view, savedInstanceState) - viewModel = ViewModelProvider(this)[SettingsViewModel::class.java] - binding.lifecycleOwner = viewLifecycleOwner binding.viewModel = viewModel observeToastEvents(viewModel) @@ -179,17 +179,6 @@ class SettingsFragment : GenericMainFragment() { viewModel.goToIncomingCallNotificationChannelSettingsEvent.observe(viewLifecycleOwner) { it.consume { currentRingtone -> try { - /* - Log.w("$TAG Going to incoming call channel settings") - val intent = Intent(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS).apply { - putExtra(Settings.EXTRA_APP_PACKAGE, requireContext().packageName) - putExtra( - Settings.EXTRA_CHANNEL_ID, - getString(R.string.notification_channel_without_ringtone_incoming_call_id) - ) - } - startActivity(intent) - */ val intent = Intent(RingtoneManager.ACTION_RINGTONE_PICKER).apply { putExtra( RingtoneManager.EXTRA_RINGTONE_TYPE, diff --git a/app/src/main/res/layout/settings_developer_fragment.xml b/app/src/main/res/layout/settings_developer_fragment.xml index b585f803d..65b47a64f 100644 --- a/app/src/main/res/layout/settings_developer_fragment.xml +++ b/app/src/main/res/layout/settings_developer_fragment.xml @@ -274,7 +274,7 @@ style="@style/settings_title_style" android:id="@+id/clear_friends_db_label" android:onClick="@{() -> viewModel.clearNativeFriendsDatabase()}" - android:layout_width="0dp" + android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="16dp" android:layout_marginEnd="10dp" @@ -286,7 +286,6 @@ android:drawableEnd="@drawable/warning_circle" android:drawableTint="?attr/color_main2_600" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toBottomOf="@id/push_compatible_domains_list"/>