From 79f1ac47a997ede4a4692dc87c26521fc9caa789 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com>
Date: Mon, 28 Jun 2021 19:05:24 -0400
Subject: [PATCH] smartlist: fix crash when searching

Change-Id: Id83ff61029299d77d9661f935f3c1d4d41980700
---
 .../java/cx/ring/viewholders/SmartListViewHolder.java    | 9 +++++----
 .../src/main/java/net/jami/model/Conversation.java       | 9 +++++++--
 2 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/ring-android/app/src/main/java/cx/ring/viewholders/SmartListViewHolder.java b/ring-android/app/src/main/java/cx/ring/viewholders/SmartListViewHolder.java
index d3e6d16cd..79086a524 100644
--- a/ring-android/app/src/main/java/cx/ring/viewholders/SmartListViewHolder.java
+++ b/ring-android/app/src/main/java/cx/ring/viewholders/SmartListViewHolder.java
@@ -38,6 +38,7 @@ import cx.ring.databinding.ItemSmartlistBinding;
 import cx.ring.databinding.ItemSmartlistHeaderBinding;
 import cx.ring.utils.ResourceMapper;
 import cx.ring.views.AvatarDrawable;
+import io.reactivex.rxjava3.core.Observable;
 import io.reactivex.rxjava3.disposables.CompositeDisposable;
 
 public class SmartListViewHolder extends RecyclerView.ViewHolder {
@@ -65,10 +66,10 @@ public class SmartListViewHolder extends RecyclerView.ViewHolder {
 
         if (binding != null) {
             itemView.setOnClickListener(v -> clickListener.onItemClick(smartListViewModel));
-            compositeDisposable.add(smartListViewModel.getSelected().subscribe(selected -> {
-                Log.w("SmartListViewHolder", "selected " + selected + " " + smartListViewModel.getContactName());
-                binding.itemLayout.setActivated(selected);
-            }));
+            Observable<Boolean> selected = smartListViewModel.getSelected();
+            if (selected != null) {
+                compositeDisposable.add(smartListViewModel.getSelected().subscribe(binding.itemLayout::setActivated));
+            }
             itemView.setOnLongClickListener(v -> {
                 clickListener.onItemLongClick(smartListViewModel);
                 return true;
diff --git a/ring-android/libringclient/src/main/java/net/jami/model/Conversation.java b/ring-android/libringclient/src/main/java/net/jami/model/Conversation.java
index 44ff694a2..b8c74e702 100644
--- a/ring-android/libringclient/src/main/java/net/jami/model/Conversation.java
+++ b/ring-android/libringclient/src/main/java/net/jami/model/Conversation.java
@@ -344,8 +344,13 @@ public class Conversation extends ConversationHistory {
         if (interaction.getContact() == null) {
             if (mContacts.size() == 1)
                 interaction.setContact(mContacts.get(0));
-            else
-                interaction.setContact(findContact(Uri.fromString(interaction.getAuthor())));
+            else {
+                if (interaction.getAuthor() == null)  {
+                    Log.e(TAG, "Can't set interaction properties: no author for type:" + interaction.getType() + " id:" + interaction.getId() + " status:" + interaction.mStatus);
+                } else {
+                    interaction.setContact(findContact(Uri.fromString(interaction.getAuthor())));
+                }
+            }
         }
     }
 
-- 
GitLab