Fixed ephemeral message not removed from list that happens sometimes

This commit is contained in:
Sylvain Berfini 2020-01-17 10:37:06 +01:00
parent f7d6ebae12
commit 3f65e2dc8c
3 changed files with 11 additions and 3 deletions

View file

@ -346,11 +346,13 @@ public class ChatMessagesAdapter extends SelectableAdapter<ChatMessageViewHolder
} }
@Override @Override
public void removeFromHistory(EventLog eventLog) { public boolean removeFromHistory(EventLog eventLog) {
int index = mHistory.indexOf(eventLog); int index = mHistory.indexOf(eventLog);
if (index >= 0) { if (index >= 0) {
removeItem(index); removeItem(index);
return true;
} }
return false;
} }
private void changeBackgroundDependingOnPreviousAndNextEvents( private void changeBackgroundDependingOnPreviousAndNextEvents(

View file

@ -1395,7 +1395,13 @@ public class ChatMessagesFragment extends Fragment
@Override @Override
public void onEphemeralMessageDeleted(ChatRoom chatRoom, EventLog eventLog) { 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 @Override

View file

@ -38,5 +38,5 @@ interface ChatMessagesGenericAdapter {
void removeItem(int i); void removeItem(int i);
void removeFromHistory(EventLog eventLog); boolean removeFromHistory(EventLog eventLog);
} }