Bumped dependencies, fixed back gesture when adding participants to a conversation or an existing meeting

This commit is contained in:
Sylvain Berfini 2024-12-12 09:34:45 +01:00
parent 47a308dcfc
commit b9065d3c7c
3 changed files with 59 additions and 3 deletions

View file

@ -102,13 +102,14 @@ class TelecomManager
CallAttributesCompat.DIRECTION_INCOMING
}
val type = CallAttributesCompat.CALL_TYPE_AUDIO_CALL or CallAttributesCompat.CALL_TYPE_VIDEO_CALL
val capabilities = CallAttributesCompat.SUPPORTS_SET_INACTIVE or CallAttributesCompat.SUPPORTS_TRANSFER
val callAttributes = CallAttributesCompat(
displayName,
uri,
direction,
CallAttributesCompat.CALL_TYPE_AUDIO_CALL,
type,
capabilities
)
Log.i("$TAG Adding call to Telecom's CallsManager with attributes [$callAttributes]")

View file

@ -23,6 +23,7 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.activity.OnBackPressedCallback
import androidx.annotation.UiThread
import androidx.core.view.doOnPreDraw
import androidx.lifecycle.ViewModelProvider
@ -47,6 +48,31 @@ class AddParticipantsFragment : GenericAddressPickerFragment() {
private val args: AddParticipantsFragmentArgs by navArgs()
private val onBackPressedCallback = object : OnBackPressedCallback(false) {
override fun handleOnBackPressed() {
Log.d("$TAG ${getFragmentRealClassName()} handleOnBackPressed")
try {
if (!goBack()) {
Log.d(
"$TAG ${getFragmentRealClassName()}'s goBack() method returned false, disabling back pressed callback and trying again"
)
isEnabled = false
try {
requireActivity().onBackPressedDispatcher.onBackPressed()
} catch (ise: IllegalStateException) {
Log.w(
"$TAG ${getFragmentRealClassName()} Can't go back: $ise"
)
}
}
} catch (ise: IllegalStateException) {
Log.e(
"$TAG ${getFragmentRealClassName()} Can't go back: $ise"
)
}
}
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
@ -75,6 +101,11 @@ class AddParticipantsFragment : GenericAddressPickerFragment() {
postponeEnterTransition()
super.onViewCreated(view, savedInstanceState)
requireActivity().onBackPressedDispatcher.addCallback(
viewLifecycleOwner,
onBackPressedCallback
)
binding.lifecycleOwner = viewLifecycleOwner
binding.viewModel = viewModel
observeToastEvents(viewModel)
@ -110,5 +141,29 @@ class AddParticipantsFragment : GenericAddressPickerFragment() {
goBack()
}
}
sharedViewModel.isSlidingPaneSlideable.observe(viewLifecycleOwner) { slideable ->
val enabled = backPressedCallBackEnabled(slideable)
onBackPressedCallback.isEnabled = enabled
Log.d(
"$TAG ${getFragmentRealClassName()} Our own back press callback is ${if (enabled) "enabled" else "disabled"}"
)
}
}
override fun onDestroyView() {
super.onDestroyView()
onBackPressedCallback.remove()
}
private fun backPressedCallBackEnabled(slideable: Boolean): Boolean {
// This allow to navigate a SlidingPane child nav graph.
// This only concerns fragments for which the nav graph is inside a SlidingPane layout.
// In our case it's all graphs except the main one.
Log.d(
"$TAG ${getFragmentRealClassName()} Sliding pane is ${if (slideable) "slideable" else "flat"}"
)
return slideable
}
}

View file

@ -12,14 +12,14 @@ appcompat = "1.7.0"
constraintLayout = "2.2.0"
coreKtx = "1.15.0"
splashscreen = "1.2.0-alpha02"
telecom = "1.0.0-alpha03"
telecom = "1.0.0-beta01"
media = "1.7.0"
recyclerview = "1.3.2"
slidingpanelayout = "1.2.0"
window = "1.3.0"
gridlayout = "1.0.0"
securityCryptoKtx = "1.1.0-alpha06"
navigation = "2.8.4"
navigation = "2.8.5"
emoji2 = "1.5.0"
car = "1.7.0-beta03"
flexbox = "3.0.0"