fix crash when no avatar is set

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/ui/ContactDetailsActivity.java | 26 
src/main/res/layout/activity_contact_details.xml                    |  4 
2 files changed, 23 insertions(+), 7 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/ui/ContactDetailsActivity.java 🔗

@@ -18,7 +18,6 @@ import android.provider.Settings;
 import android.text.Spannable;
 import android.text.SpannableString;
 import android.text.style.RelativeSizeSpan;
-import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.Menu;
 import android.view.MenuItem;
@@ -522,10 +521,11 @@ public class ContactDetailsActivity extends OmemoActivity
         binding.detailsContactXmppAddress.setText(
                 IrregularUnicodeDetector.style(this, contact.getJid()));
         final String account = contact.getAccount().getJid().asBareJid().toString();
+        binding.detailsAccount.setOnClickListener(this::onDetailsAccountClicked);
         binding.detailsAccount.setText(getString(R.string.using_account, account));
         AvatarWorkerTask.loadAvatar(
-                contact, binding.detailsContactBadge, R.dimen.avatar_on_details_screen_size);
-        binding.detailsContactBadge.setOnClickListener(this::onBadgeClick);
+                contact, binding.detailsAvatar, R.dimen.avatar_on_details_screen_size);
+        binding.detailsAvatar.setOnClickListener(this::onAvatarClicked);
         if (QuickConversationsService.isContactListIntegration(this)) {
             if (contact.getSystemAccount() == null) {
                 binding.addAddressBook.setText(R.string.save_to_contact);
@@ -669,9 +669,25 @@ public class ContactDetailsActivity extends OmemoActivity
         }
     }
 
-    private void onBadgeClick(final View view) {
+    private void onDetailsAccountClicked(final View view) {
+        final var contact = this.contact;
+        if (contact == null) {
+            return;
+        }
+        switchToAccount(contact.getAccount());
+    }
+
+    private void onAvatarClicked(final View view) {
+        final var contact = this.contact;
+        if (contact == null) {
+            return;
+        }
+        final var avatar = contact.getAvatar();
+        if (avatar == null) {
+            return;
+        }
         final var intent = new Intent(this, ViewProfilePictureActivity.class);
-        intent.setData(Uri.fromParts("avatar", contact.getAvatar(), null));
+        intent.setData(Uri.fromParts("avatar", avatar, null));
         intent.putExtra(ViewProfilePictureActivity.EXTRA_DISPLAY_NAME, contact.getDisplayName());
         startActivity(intent);
     }

src/main/res/layout/activity_contact_details.xml 🔗

@@ -45,7 +45,7 @@
                         android:padding="@dimen/card_padding_regular">
 
                         <com.makeramen.roundedimageview.RoundedImageView
-                            android:id="@+id/details_contact_badge"
+                            android:id="@+id/details_avatar"
                             android:layout_width="@dimen/publish_avatar_size"
                             android:layout_height="@dimen/publish_avatar_size"
                             android:layout_alignParentTop="true"
@@ -57,7 +57,7 @@
                             android:id="@+id/details_contact_xmpp_address"
                             android:layout_width="wrap_content"
                             android:layout_height="wrap_content"
-                            android:layout_below="@+id/details_contact_badge"
+                            android:layout_below="@+id/details_avatar"
                             android:layout_centerHorizontal="true"
                             android:layout_marginTop="16sp"
                             android:gravity="center_horizontal"