From ce93537fee0b2a58644d246553a659a52025ac26 Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Mon, 13 Jun 2022 09:57:56 -0400 Subject: [PATCH] Update incoming call handling. * Fix crash with incoming ringer when custom ringtone isn't found. * Stop notification profiles from terminating calls on linked devices. --- .../service/webrtc/WebRtcActionProcessor.java | 1 - .../webrtc/audio/IncomingRinger.java | 20 +++++++++---------- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/WebRtcActionProcessor.java b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/WebRtcActionProcessor.java index f35ad732ec..1f7d45229f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/WebRtcActionProcessor.java +++ b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/WebRtcActionProcessor.java @@ -195,7 +195,6 @@ public abstract class WebRtcActionProcessor { NotificationProfile activeProfile = NotificationProfiles.getActiveProfile(SignalDatabase.notificationProfiles().getProfiles()); if (activeProfile != null && !(activeProfile.isRecipientAllowed(callMetadata.getRemotePeer().getId()) || activeProfile.getAllowAllCalls())) { Log.w(tag, "Caller is excluded by notification profile."); - currentState = currentState.getActionProcessor().handleSendHangup(currentState, callMetadata, WebRtcData.HangupMetadata.fromType(HangupMessage.Type.NORMAL), true); webRtcInteractor.insertMissedCall(callMetadata.getRemotePeer(), receivedOfferMetadata.getServerReceivedTimestamp(), offerMetadata.getOfferType() == OfferMessage.Type.VIDEO_CALL); return currentState; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/webrtc/audio/IncomingRinger.java b/app/src/main/java/org/thoughtcrime/securesms/webrtc/audio/IncomingRinger.java index c2d3311951..bf2bb59154 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/webrtc/audio/IncomingRinger.java +++ b/app/src/main/java/org/thoughtcrime/securesms/webrtc/audio/IncomingRinger.java @@ -134,21 +134,19 @@ public class IncomingRinger { MediaPlayer mediaPlayer = new MediaPlayer(); mediaPlayer.setDataSource(context, ringtoneUri); return mediaPlayer; - } catch (SecurityException e) { + } catch (IOException | SecurityException e) { Log.w(TAG, "Failed to create player with ringtone the normal way", e); } - if (ringtoneUri.equals(Settings.System.DEFAULT_RINGTONE_URI)) { - try { - Uri defaultRingtoneUri = RingtoneUtil.getActualDefaultRingtoneUri(context); - if (defaultRingtoneUri != null) { - MediaPlayer mediaPlayer = new MediaPlayer(); - mediaPlayer.setDataSource(context, defaultRingtoneUri); - return mediaPlayer; - } - } catch (SecurityException e) { - Log.w(TAG, "Failed to set default ringtone with fallback approach", e); + try { + Uri defaultRingtoneUri = RingtoneUtil.getActualDefaultRingtoneUri(context); + if (defaultRingtoneUri != null) { + MediaPlayer mediaPlayer = new MediaPlayer(); + mediaPlayer.setDataSource(context, defaultRingtoneUri); + return mediaPlayer; } + } catch (SecurityException e) { + Log.w(TAG, "Failed to set default ringtone with fallback approach", e); } return null;