From ec8793c6fe3b7131cbf77f5de98a26a816d71a0f Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Wed, 9 Dec 2020 14:39:22 -0500 Subject: [PATCH] Fix rendering issue when deleting the last message in a conversation. --- .../securesms/conversation/ConversationFragment.java | 7 +++++-- .../java/org/signal/paging/FixedSizePagingController.java | 6 ++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationFragment.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationFragment.java index 158df5b8a..a3a583302 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationFragment.java @@ -250,8 +250,11 @@ public class ConversationFragment extends LoggingFragment { this.messageCountsViewModel = ViewModelProviders.of(requireActivity()).get(MessageCountsViewModel.class); this.conversationViewModel = ViewModelProviders.of(requireActivity(), new ConversationViewModel.Factory()).get(ConversationViewModel.class); - conversationViewModel.getMessages().observe(this, list -> { - getListAdapter().submitList(list); + conversationViewModel.getMessages().observe(this, messages -> { + ConversationAdapter adapter = getListAdapter(); + if (adapter != null) { + getListAdapter().submitList(messages); + } }); conversationViewModel.getConversationMetadata().observe(this, this::presentConversationMetadata); diff --git a/paging/lib/src/main/java/org/signal/paging/FixedSizePagingController.java b/paging/lib/src/main/java/org/signal/paging/FixedSizePagingController.java index a8e5d6d23..4587997e3 100644 --- a/paging/lib/src/main/java/org/signal/paging/FixedSizePagingController.java +++ b/paging/lib/src/main/java/org/signal/paging/FixedSizePagingController.java @@ -6,6 +6,7 @@ import androidx.lifecycle.MutableLiveData; import org.signal.core.util.concurrent.SignalExecutors; import org.signal.core.util.logging.Log; +import java.util.Collections; import java.util.List; import java.util.concurrent.Executor; @@ -57,6 +58,11 @@ class FixedSizePagingController implements PagingController { return; } + if (loadState.size() == 0) { + liveData.postValue(Collections.emptyList()); + return; + } + int leftPageBoundary = (aroundIndex / config.pageSize()) * config.pageSize(); int rightPageBoundary = leftPageBoundary + config.pageSize(); int buffer = config.bufferPages() * config.pageSize();