Add additional call links moderation ui.

This commit is contained in:
Alex Hart
2023-08-08 15:10:47 -03:00
parent 7c209db146
commit 30d0b6fd0e
20 changed files with 531 additions and 105 deletions

View File

@@ -84,11 +84,11 @@ public class CommunicationActions {
@Override
protected void onReceiveResult(int resultCode, Bundle resultData) {
if (resultCode == 1) {
startCallInternal(callContext, recipient, false);
startCallInternal(callContext, recipient, false, false);
} else {
new MaterialAlertDialogBuilder(callContext.getContext())
.setMessage(R.string.CommunicationActions_start_voice_call)
.setPositiveButton(R.string.CommunicationActions_call, (d, w) -> startCallInternal(callContext, recipient, false))
.setPositiveButton(R.string.CommunicationActions_call, (d, w) -> startCallInternal(callContext, recipient, false, false))
.setNegativeButton(R.string.CommunicationActions_cancel, (d, w) -> d.dismiss())
.setCancelable(true)
.show();
@@ -104,17 +104,17 @@ public class CommunicationActions {
* Start a video call. Assumes that permission request results will be routed to a handler on the Fragment.
*/
public static void startVideoCall(@NonNull Fragment fragment, @NonNull Recipient recipient) {
startVideoCall(new FragmentCallContext(fragment), recipient);
startVideoCall(new FragmentCallContext(fragment), recipient, false);
}
/**
* 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) {
startVideoCall(new ActivityCallContext(activity), recipient);
startVideoCall(new ActivityCallContext(activity), recipient, false);
}
private static void startVideoCall(@NonNull CallContext callContext, @NonNull Recipient recipient) {
private static void startVideoCall(@NonNull CallContext callContext, @NonNull Recipient recipient, boolean fromCallLink) {
if (TelephonyUtil.isAnyPstnLineBusy(callContext.getContext())) {
Toast.makeText(callContext.getContext(),
R.string.CommunicationActions_a_cellular_call_is_already_in_progress,
@@ -126,7 +126,7 @@ public class CommunicationActions {
ApplicationDependencies.getSignalCallManager().isCallActive(new ResultReceiver(new Handler(Looper.getMainLooper())) {
@Override
protected void onReceiveResult(int resultCode, Bundle resultData) {
startCallInternal(callContext, recipient, resultCode != 1);
startCallInternal(callContext, recipient, resultCode != 1, fromCallLink);
}
});
}
@@ -377,7 +377,7 @@ public class CommunicationActions {
.setPositiveButton(android.R.string.ok, null)
.show();
} else {
startVideoCall(callContext, callLinkRecipient.get());
startVideoCall(callContext, callLinkRecipient.get(), true);
}
});
}
@@ -394,8 +394,8 @@ public class CommunicationActions {
}
}
private static void startCallInternal(@NonNull CallContext callContext, @NonNull Recipient recipient, boolean isVideo) {
if (isVideo) startVideoCallInternal(callContext, recipient);
private static void startCallInternal(@NonNull CallContext callContext, @NonNull Recipient recipient, boolean isVideo, boolean fromCallLink) {
if (isVideo) startVideoCallInternal(callContext, recipient, fromCallLink);
else startAudioCallInternal(callContext, recipient);
}
@@ -420,7 +420,7 @@ public class CommunicationActions {
.execute();
}
private static void startVideoCallInternal(@NonNull CallContext callContext, @NonNull Recipient recipient) {
private static void startVideoCallInternal(@NonNull CallContext callContext, @NonNull Recipient recipient, boolean fromCallLink) {
callContext.getPermissionsBuilder()
.request(Manifest.permission.RECORD_AUDIO, Manifest.permission.CAMERA)
.ifNecessary()
@@ -434,7 +434,8 @@ public class CommunicationActions {
Intent activityIntent = new Intent(callContext.getContext(), WebRtcCallActivity.class);
activityIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
.putExtra(WebRtcCallActivity.EXTRA_ENABLE_VIDEO_IF_AVAILABLE, true);
.putExtra(WebRtcCallActivity.EXTRA_ENABLE_VIDEO_IF_AVAILABLE, true)
.putExtra(WebRtcCallActivity.EXTRA_STARTED_FROM_CALL_LINK, fromCallLink);
callContext.startActivity(activityIntent);
})