diff --git a/atox/src/main/kotlin/ui/call/CallFragment.kt b/atox/src/main/kotlin/ui/call/CallFragment.kt index 1b2fa540e..c44832a06 100644 --- a/atox/src/main/kotlin/ui/call/CallFragment.kt +++ b/atox/src/main/kotlin/ui/call/CallFragment.kt @@ -7,6 +7,7 @@ package ltd.evilcorp.atox.ui.call import android.Manifest import android.os.Bundle +import android.util.Log import android.view.View import android.widget.Toast import androidx.activity.result.contract.ActivityResultContracts @@ -26,6 +27,7 @@ import ltd.evilcorp.atox.vmFactory import ltd.evilcorp.core.vo.PublicKey import ltd.evilcorp.domain.feature.CallState +private const val TAG = "CallFragment" private const val PERMISSION = Manifest.permission.RECORD_AUDIO class CallFragment : BaseFragment(FragmentCallBinding::inflate) { @@ -37,11 +39,12 @@ class CallFragment : BaseFragment(FragmentCallBinding::infl if (granted) { vm.startSendingAudio() } else { - Toast.makeText(requireContext(), getString(R.string.call_mic_permission_needed), Toast.LENGTH_LONG).show() + Log.d(TAG, "Got no permission") + // Toast.makeText(requireContext(), getString(R.string.call_mic_permission_needed), Toast.LENGTH_LONG).show() } } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) = binding.run { + override fun onViewCreated(view: View, savedInstanceState: Bundle?): Unit = binding.run { ViewCompat.setOnApplyWindowInsetsListener(view) { _, compat -> val insets = compat.getInsets(WindowInsetsCompat.Type.systemBars()) controlContainer.updatePadding(bottom = insets.bottom + controlContainer.paddingTop) @@ -73,7 +76,11 @@ class CallFragment : BaseFragment(FragmentCallBinding::infl if (requireContext().hasPermission(PERMISSION)) { vm.startSendingAudio() } else { - requestPermissionLauncher.launch(PERMISSION) + Toast.makeText( + context, + R.string.call_mic_permission_needed, + Toast.LENGTH_LONG, + ).show() } } } @@ -99,7 +106,9 @@ class CallFragment : BaseFragment(FragmentCallBinding::infl startCall() - if (requireContext().hasPermission(PERMISSION)) { + if (!requireContext().hasPermission(PERMISSION)) { + requestPermissionLauncher.launch(PERMISSION) + } else { vm.startSendingAudio() } } diff --git a/domain/src/main/kotlin/feature/CallManager.kt b/domain/src/main/kotlin/feature/CallManager.kt index 7a8240991..21ac7a6e1 100644 --- a/domain/src/main/kotlin/feature/CallManager.kt +++ b/domain/src/main/kotlin/feature/CallManager.kt @@ -96,6 +96,9 @@ class CallManager @Inject constructor(private val tox: Tox, private val scope: C fun startSendingAudio(): Boolean { val to = (inCall.value as CallState.InCall?)?.publicKey ?: return false + if (_sendingAudio.value) { + return true + } val recorder = AudioCapture.create(AUDIO_SAMPLING_RATE_HZ, AUDIO_CHANNELS, AUDIO_SEND_INTERVAL_MS) ?: return false startAudioSender(recorder, to)