From 0b4e8d947f50a927d8135e3350ae80b27b9ee86d Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Tue, 19 Nov 2024 11:45:42 +0100 Subject: [PATCH] show warning if contact doesnt support calls --- .../conversations/ui/RtpSessionActivity.java | 27 +++++++++++--- src/main/res/drawable/ic_warning_48dp.xml | 5 +++ src/main/res/layout/activity_rtp_session.xml | 35 +++++++++++++++++++ src/main/res/values-land/bools.xml | 2 +- src/main/res/values/bools.xml | 2 +- src/main/res/values/strings.xml | 1 + 6 files changed, 65 insertions(+), 7 deletions(-) create mode 100644 src/main/res/drawable/ic_warning_48dp.xml diff --git a/src/main/java/eu/siacs/conversations/ui/RtpSessionActivity.java b/src/main/java/eu/siacs/conversations/ui/RtpSessionActivity.java index 3bd79b37fc06a4b65b014c08b364a5219d0e3b9b..5945dd253600608912bde95ca687fdfe527daef7 100644 --- a/src/main/java/eu/siacs/conversations/ui/RtpSessionActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/RtpSessionActivity.java @@ -533,15 +533,17 @@ public class RtpSessionActivity extends XmppActivity final String extraLastState = intent.getStringExtra(EXTRA_LAST_REPORTED_STATE); final RtpEndUserState state = extraLastState == null ? null : RtpEndUserState.valueOf(extraLastState); + final var contact = account.getRoster().getContact(with); if (state != null) { Log.d(Config.LOGTAG, "restored last state from intent extra"); updateButtonConfiguration(state); updateVerifiedShield(false); updateStateDisplay(state); updateIncomingCallScreen(state); + updateSupportWarning(state, contact); invalidateOptionsMenu(); } - setWith(account.getRoster().getContact(with), state); + setWith(state, contact); if (xmppConnectionService .getJingleConnectionManager() .fireJingleRtpConnectionStateUpdates()) { @@ -564,10 +566,10 @@ public class RtpSessionActivity extends XmppActivity } private void setWidth(final RtpEndUserState state) { - setWith(getWith(), state); + setWith(state, getWith()); } - private void setWith(final Contact contact, final RtpEndUserState state) { + private void setWith(final RtpEndUserState state, final Contact contact) { binding.with.setText(contact.getDisplayName()); if (Arrays.asList(RtpEndUserState.INCOMING_CALL, RtpEndUserState.ACCEPTING_CALL) .contains(state)) { @@ -822,7 +824,9 @@ public class RtpSessionActivity extends XmppActivity updateCallDuration(); updateVerifiedShield(false); invalidateOptionsMenu(); - setWith(account.getRoster().getContact(with), state); + final var contact = account.getRoster().getContact(with); + setWith(state, contact); + updateSupportWarning(state, contact); } private void reInitializeActivityWithRunningRtpSession( @@ -912,7 +916,7 @@ public class RtpSessionActivity extends XmppActivity private void updateIncomingCallScreen(final RtpEndUserState state, final Contact contact) { if (state == RtpEndUserState.INCOMING_CALL || state == RtpEndUserState.ACCEPTING_CALL) { - final boolean show = getResources().getBoolean(R.bool.show_avatar_incoming_call); + final boolean show = getResources().getBoolean(R.bool.is_portrait_mode); if (show) { binding.contactPhoto.setVisibility(View.VISIBLE); if (contact == null) { @@ -937,6 +941,18 @@ public class RtpSessionActivity extends XmppActivity } } + private void updateSupportWarning(final RtpEndUserState state, final Contact contact) { + if (state == RtpEndUserState.CONNECTIVITY_ERROR + && getResources().getBoolean(R.bool.is_portrait_mode)) { + binding.supportWarning.setVisibility( + RtpCapability.check(contact) == RtpCapability.Capability.NONE + ? View.VISIBLE + : View.GONE); + } else { + binding.supportWarning.setVisibility(View.GONE); + } + } + private Set getMedia() { return requireRtpConnection().getMedia(); } @@ -1530,6 +1546,7 @@ public class RtpSessionActivity extends XmppActivity updateButtonConfiguration(state, media, contentAddition); updateVideoViews(state); updateIncomingCallScreen(state, contact); + updateSupportWarning(state, contact); invalidateOptionsMenu(); }); if (END_CARD.contains(state)) { diff --git a/src/main/res/drawable/ic_warning_48dp.xml b/src/main/res/drawable/ic_warning_48dp.xml new file mode 100644 index 0000000000000000000000000000000000000000..200b6a9fc98980de5a9dfe59cd19670a3f35a787 --- /dev/null +++ b/src/main/res/drawable/ic_warning_48dp.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/res/layout/activity_rtp_session.xml b/src/main/res/layout/activity_rtp_session.xml index 3b779969d5af79e732658d2f72a6af9b96c339ee..cd3ec1ceffa87bda73f4b2dba7757a21d46304bb 100644 --- a/src/main/res/layout/activity_rtp_session.xml +++ b/src/main/res/layout/activity_rtp_session.xml @@ -78,6 +78,41 @@ android:layout_above="@+id/button_row" android:layout_below="@id/app_bar_layout"> + + + + + + + + + + - false + false diff --git a/src/main/res/values/bools.xml b/src/main/res/values/bools.xml index 0799afb3f53b5938ae611c3cb1110a04e87a6c52..dad6c5eebf5dbc571012524f35abd9db85e35433 100644 --- a/src/main/res/values/bools.xml +++ b/src/main/res/values/bools.xml @@ -1,4 +1,4 @@ - true + true \ No newline at end of file diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index d6d324321d6e9bbf9c294cca24e445cc482e2a5f..6e4ce77ea3fa3076a86a2deb28db0a2184758708 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -1087,4 +1087,5 @@ Add reaction More reactions Could not modify call + Your contact’s XMPP client might not support audio/video calls.