Skip to content

Commit

Permalink
Update microphone permission UI for calls.
Browse files Browse the repository at this point in the history
  • Loading branch information
mtang-signal authored and greyson-signal committed Apr 29, 2024
1 parent c5c0c43 commit fd4864b
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,14 @@
import androidx.core.app.TaskStackBuilder;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import androidx.fragment.app.FragmentManager;

import com.google.android.material.dialog.MaterialAlertDialogBuilder;

import org.signal.core.util.concurrent.RxExtensions;
import org.signal.core.util.concurrent.SignalExecutors;
import org.signal.core.util.concurrent.SimpleTask;
import org.signal.core.util.logging.Log;
import org.signal.libsignal.usernames.BaseUsernameException;
import org.signal.libsignal.usernames.Username;
import org.signal.ringrtc.CallLinkRootKey;
import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.WebRtcCallActivity;
Expand All @@ -44,16 +43,13 @@
import org.thoughtcrime.securesms.groups.v2.GroupInviteLinkUrl;
import org.thoughtcrime.securesms.permissions.Permissions;
import org.thoughtcrime.securesms.profiles.manage.UsernameRepository;
import org.thoughtcrime.securesms.profiles.manage.UsernameRepository.UsernameAciFetchResult;
import org.thoughtcrime.securesms.profiles.manage.UsernameRepository.UsernameLinkConversionResult;
import org.thoughtcrime.securesms.proxy.ProxyBottomSheetFragment;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.service.webrtc.links.CallLinkRoomId;
import org.thoughtcrime.securesms.sms.MessageSender;
import org.thoughtcrime.securesms.util.views.SimpleProgressDialog;
import org.whispersystems.signalservice.api.push.ServiceId;
import org.whispersystems.signalservice.api.push.UsernameLinkComponents;
import org.whispersystems.signalservice.internal.storage.protos.AccountRecord;

import java.io.IOException;
import java.util.Objects;
Expand All @@ -74,7 +70,7 @@ public static void startVoiceCall(@NonNull Fragment fragment, @NonNull Recipient
/**
* Start a voice call. Assumes that permission request results will be routed to a handler on the Activity.
*/
public static void startVoiceCall(@NonNull Activity activity, @NonNull Recipient recipient) {
public static void startVoiceCall(@NonNull FragmentActivity activity, @NonNull Recipient recipient) {
startVoiceCall(new ActivityCallContext(activity), recipient);
}

Expand Down Expand Up @@ -118,7 +114,7 @@ public static void startVideoCall(@NonNull Fragment fragment, @NonNull Recipient
/**
* Start a video call. Assumes that permission request results will be routed to a handler on the Activity.
*/
public static void startVideoCall(@NonNull Activity activity, @NonNull Recipient recipient) {
public static void startVideoCall(@NonNull FragmentActivity activity, @NonNull Recipient recipient) {
startVideoCall(new ActivityCallContext(activity), recipient, false);
}

Expand Down Expand Up @@ -172,7 +168,7 @@ protected void onPostExecute(@NonNull Long threadId) {
}.execute();
}

public static void startInsecureCall(@NonNull Activity activity, @NonNull Recipient recipient) {
public static void startInsecureCall(@NonNull FragmentActivity activity, @NonNull Recipient recipient) {
startInsecureCall(new ActivityCallContext(activity), recipient);
}

Expand Down Expand Up @@ -392,9 +388,9 @@ private static void startAudioCallInternal(@NonNull CallContext callContext, @No
callContext.getPermissionsBuilder()
.request(Manifest.permission.RECORD_AUDIO)
.ifNecessary()
.withRationaleDialog(callContext.getContext().getString(R.string.ConversationActivity__to_call_s_signal_needs_access_to_your_microphone, recipient.getDisplayName(callContext.getContext())),
R.drawable.ic_mic_solid_24)
.withPermanentDenialDialog(callContext.getContext().getString(R.string.ConversationActivity__to_call_s_signal_needs_access_to_your_microphone, recipient.getDisplayName(callContext.getContext())))
.withRationaleDialog(callContext.getContext().getString(R.string.ConversationActivity_allow_access_microphone), callContext.getContext().getString(R.string.ConversationActivity__to_call_signal_needs_access_to_your_microphone), R.drawable.symbol_phone_24)
.withPermanentDenialDialog(callContext.getContext().getString(R.string.ConversationActivity__to_call_signal_needs_access_to_your_microphone), null, R.string.ConversationActivity_allow_access_microphone, R.string.ConversationActivity__to_start_call, callContext.getFragmentManager())
.onAnyDenied(() -> Toast.makeText(callContext.getContext(), R.string.ConversationActivity_signal_needs_microphone_access_voice_call, Toast.LENGTH_LONG).show())
.onAllGranted(() -> {
ApplicationDependencies.getSignalCallManager().startOutgoingAudioCall(recipient);

Expand Down Expand Up @@ -496,12 +492,13 @@ private interface CallContext {
@NonNull Permissions.PermissionsBuilder getPermissionsBuilder();
void startActivity(@NonNull Intent intent);
@NonNull Context getContext();
@NonNull FragmentManager getFragmentManager();
}

private static class ActivityCallContext implements CallContext {
private final Activity activity;
private final FragmentActivity activity;

private ActivityCallContext(Activity activity) {
private ActivityCallContext(FragmentActivity activity) {
this.activity = activity;
}

Expand All @@ -519,6 +516,11 @@ public void startActivity(@NonNull Intent intent) {
public @NonNull Context getContext() {
return activity;
}

@Override
public @NonNull FragmentManager getFragmentManager() {
return activity.getSupportFragmentManager();
}
}

private static class FragmentCallContext implements CallContext {
Expand All @@ -542,5 +544,10 @@ public void startActivity(@NonNull Intent intent) {
public @NonNull Context getContext() {
return fragment.requireContext();
}

@Override
public @NonNull FragmentManager getFragmentManager() {
return fragment.getParentFragmentManager();
}
}
}
8 changes: 7 additions & 1 deletion app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -429,7 +429,13 @@
<string name="ConversationActivity_you_will_leave_this_group_and_it_will_be_deleted_from_all_of_your_devices">You will leave this group, and it will be deleted from all your devices.</string>
<string name="ConversationActivity_delete">Delete</string>
<string name="ConversationActivity_delete_and_leave">Delete and leave</string>
<string name="ConversationActivity__to_call_s_signal_needs_access_to_your_microphone">To call %1$s, Signal needs access to your microphone</string>

<!-- Dialog description that will explain the steps needed to give microphone permissions for a voice call -->
<string name="ConversationActivity__to_start_call">To start a call:</string>
<!-- Alert dialog description asking for microphone permission in order to start a voice call -->
<string name="ConversationActivity__to_call_signal_needs_access_to_your_microphone">To start a call, allow Signal access to your microphone.</string>
<!-- Toast text explaining Signal's need for microphone access for a voice call -->
<string name="ConversationActivity_signal_needs_microphone_access_voice_call">Signal needs microphone access to start a call.</string>


<string name="ConversationActivity_join">Join</string>
Expand Down

0 comments on commit fd4864b

Please sign in to comment.