srctree

Robin Linden parent e65cdca4 d163346a
Add extension for easier permission-checking

atox/src/main/kotlin/ActionReceiver.kt added: 13, removed: 18, total 0
@@ -4,10 +4,8 @@ import android.Manifest
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
import android.widget.Toast
import androidx.core.app.RemoteInput
import androidx.core.content.ContextCompat
import javax.inject.Inject
import ltd.evilcorp.atox.ui.NotificationHelper
import ltd.evilcorp.core.vo.Contact
@@ -49,11 +47,7 @@ class ActionReceiver : BroadcastReceiver() {
if (callChoice == "accept") {
callManager.answerCall(PublicKey(pk))
notificationHelper.showOngoingCallNotification(Contact(pk, tox.getName()))
if (ContextCompat.checkSelfPermission(
context,
Manifest.permission.RECORD_AUDIO
) == PackageManager.PERMISSION_GRANTED
) {
if (context.hasPermission(Manifest.permission.RECORD_AUDIO)) {
callManager.startSendingAudio()
} else {
Toast.makeText(context, R.string.call_mic_permission_needed, Toast.LENGTH_LONG).show()
 
atox/src/main/kotlin/Extensions.kt added: 13, removed: 18, total 0
@@ -1,8 +1,14 @@
package ltd.evilcorp.atox
 
import android.content.Context
import android.content.pm.PackageManager
import androidx.core.content.ContextCompat
import androidx.fragment.app.Fragment
import ltd.evilcorp.atox.di.ViewModelFactory
 
fun Context.hasPermission(permission: String) =
ContextCompat.checkSelfPermission(this, permission) == PackageManager.PERMISSION_GRANTED
 
val Fragment.vmFactory: ViewModelFactory
get() = (requireActivity() as MainActivity).vmFactory
 
 
atox/src/main/kotlin/ui/call/CallFragment.kt added: 13, removed: 18, total 0
@@ -1,12 +1,10 @@
package ltd.evilcorp.atox.ui.call
 
import android.Manifest
import android.content.pm.PackageManager
import android.os.Bundle
import android.view.View
import android.widget.Toast
import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.content.ContextCompat
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.updatePadding
@@ -15,6 +13,7 @@ import androidx.lifecycle.asLiveData
import androidx.navigation.fragment.findNavController
import ltd.evilcorp.atox.R
import ltd.evilcorp.atox.databinding.FragmentCallBinding
import ltd.evilcorp.atox.hasPermission
import ltd.evilcorp.atox.requireStringArg
import ltd.evilcorp.atox.ui.BaseFragment
import ltd.evilcorp.atox.ui.chat.CONTACT_PUBLIC_KEY
@@ -67,11 +66,7 @@ class CallFragment : BaseFragment<FragmentCallBinding>(FragmentCallBinding::infl
if (vm.sendingAudio.value) {
vm.stopSendingAudio()
} else {
if (ContextCompat.checkSelfPermission(
requireContext(),
PERMISSION
) == PackageManager.PERMISSION_GRANTED
) {
if (requireContext().hasPermission(PERMISSION)) {
vm.startSendingAudio()
} else {
requestPermissionLauncher.launch(PERMISSION)
@@ -90,7 +85,7 @@ class CallFragment : BaseFragment<FragmentCallBinding>(FragmentCallBinding::infl
 
startCall()
 
if (ContextCompat.checkSelfPermission(requireContext(), PERMISSION) == PackageManager.PERMISSION_GRANTED) {
if (requireContext().hasPermission(PERMISSION)) {
vm.startSendingAudio()
}
}