Refactor mic permission

pull/1467/head
Andrew 2 months ago
parent 56bb25c137
commit 0afa5e52aa

@ -37,9 +37,8 @@ import org.thoughtcrime.securesms.conversation.v2.utilities.NotificationUtils
import org.thoughtcrime.securesms.dependencies.DatabaseComponent
import org.thoughtcrime.securesms.groups.EditClosedGroupActivity
import org.thoughtcrime.securesms.groups.EditClosedGroupActivity.Companion.groupIDKey
import org.thoughtcrime.securesms.permissions.Permissions
import org.thoughtcrime.securesms.permissions.requestMicrophonePermission
import org.thoughtcrime.securesms.preferences.PrivacySettingsActivity
import org.thoughtcrime.securesms.preferences.requestMicrophonePermission
import org.thoughtcrime.securesms.service.WebRtcCallService
import org.thoughtcrime.securesms.showMuteDialog
import org.thoughtcrime.securesms.showSessionDialog

@ -1,9 +1,7 @@
package org.thoughtcrime.securesms.permissions;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
@ -11,9 +9,7 @@ import android.os.Build;
import android.provider.Settings;
import android.util.DisplayMetrics;
import android.view.Display;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.Button;
import androidx.annotation.DrawableRes;
import androidx.annotation.NonNull;
@ -33,8 +29,6 @@ import java.util.Arrays;
import java.util.List;
import java.util.Map;
import network.loki.messenger.R;
public class Permissions {
private static final Map<Integer, PermissionsRequest> OUTSTANDING = new LRUCache<>(2);

@ -0,0 +1,29 @@
package org.thoughtcrime.securesms.permissions
import android.Manifest
import android.app.Activity
import android.content.Context
import androidx.fragment.app.Fragment
import network.loki.messenger.R
import org.session.libsession.utilities.TextSecurePreferences
fun Fragment.requestMicrophonePermission(callback: (Boolean) -> Unit) {
requireContext().requestMicrophonePermission(Permissions.with(this), callback)
}
fun Activity.requestMicrophonePermission(callback: (Boolean) -> Unit) {
requestMicrophonePermission(Permissions.with(this), callback)
}
private fun Context.requestMicrophonePermission(
permissions: Permissions.PermissionsBuilder,
callback: (Boolean) -> Unit
) {
permissions
.request(Manifest.permission.RECORD_AUDIO)
.withPermanentDenialDialog(getString(R.string.ConversationActivity_signal_requires_the_microphone_permission_in_order_to_send_audio_messages))
.onAllGranted { callback(true) }
.onAnyDenied { callback(false) }
.execute()
}

@ -9,6 +9,7 @@ import network.loki.messenger.R
import org.session.libsession.utilities.TextSecurePreferences
import org.session.libsession.utilities.TextSecurePreferences.Companion.setBooleanPreference
import org.thoughtcrime.securesms.permissions.Permissions
import org.thoughtcrime.securesms.permissions.requestMicrophonePermission
import org.thoughtcrime.securesms.showSessionDialog
internal class CallToggleListener(
@ -30,29 +31,3 @@ internal class CallToggleListener(
return false
}
}
fun Fragment.requestMicrophonePermission(callback: (Boolean) -> Unit) {
requireContext().requestMicrophonePermission(Permissions.with(this), callback)
}
fun Activity.requestMicrophonePermission(callback: (Boolean) -> Unit) {
requestMicrophonePermission(Permissions.with(this), callback)
}
fun Context.requestMicrophonePermission(
permissions: Permissions.PermissionsBuilder,
callback: (Boolean) -> Unit
) {
permissions
.request(Manifest.permission.RECORD_AUDIO)
.onAllGranted {
setBooleanPreference(
this,
TextSecurePreferences.CALL_NOTIFICATIONS_ENABLED,
true
)
callback(true)
}
.onAnyDenied { callback(false) }
.execute()
}

@ -70,8 +70,7 @@ class PrivacySettingsPreferenceFragment : ListSummaryPreferenceFragment() {
}
private fun setCall(isEnabled: Boolean) {
(findPreference<Preference>(TextSecurePreferences.CALL_NOTIFICATIONS_ENABLED) as SwitchPreferenceCompat?)!!.isChecked =
isEnabled
findPreference<SwitchPreferenceCompat>(TextSecurePreferences.CALL_NOTIFICATIONS_ENABLED)!!.isChecked = isEnabled
if (isEnabled && !areNotificationsEnabled(requireActivity())) {
// show a dialog saying that calls won't work properly if you don't have notifications on at a system level
showSessionDialog {

Loading…
Cancel
Save