diff --git a/app/src/main/java/org/linphone/chat/ChatMessagesAdapter.java b/app/src/main/java/org/linphone/chat/ChatMessagesAdapter.java index dcd0b3e45..95220570e 100644 --- a/app/src/main/java/org/linphone/chat/ChatMessagesAdapter.java +++ b/app/src/main/java/org/linphone/chat/ChatMessagesAdapter.java @@ -346,11 +346,13 @@ public class ChatMessagesAdapter extends SelectableAdapter= 0) { removeItem(index); + return true; } + return false; } private void changeBackgroundDependingOnPreviousAndNextEvents( diff --git a/app/src/main/java/org/linphone/chat/ChatMessagesFragment.java b/app/src/main/java/org/linphone/chat/ChatMessagesFragment.java index 3ec842396..025e03485 100644 --- a/app/src/main/java/org/linphone/chat/ChatMessagesFragment.java +++ b/app/src/main/java/org/linphone/chat/ChatMessagesFragment.java @@ -1395,7 +1395,13 @@ public class ChatMessagesFragment extends Fragment @Override public void onEphemeralMessageDeleted(ChatRoom chatRoom, EventLog eventLog) { - ((ChatMessagesGenericAdapter) mChatEventsList.getAdapter()).removeFromHistory(eventLog); + Log.i("[Chat Room] Ephemeral message expired"); + if (!((ChatMessagesGenericAdapter) mChatEventsList.getAdapter()) + .removeFromHistory(eventLog)) { + Log.w("[Chat Room] Ephemeral message not found, refresh list"); + ((ChatMessagesGenericAdapter) mChatEventsList.getAdapter()) + .refresh(mChatRoom.getHistoryEvents(MESSAGES_PER_PAGE)); + } } @Override diff --git a/app/src/main/java/org/linphone/chat/ChatMessagesGenericAdapter.java b/app/src/main/java/org/linphone/chat/ChatMessagesGenericAdapter.java index aeb47ca2b..0052c27e8 100644 --- a/app/src/main/java/org/linphone/chat/ChatMessagesGenericAdapter.java +++ b/app/src/main/java/org/linphone/chat/ChatMessagesGenericAdapter.java @@ -38,5 +38,5 @@ interface ChatMessagesGenericAdapter { void removeItem(int i); - void removeFromHistory(EventLog eventLog); + boolean removeFromHistory(EventLog eventLog); }