From de0819d3bf46afcd01300521b62fee9ca5fc610d Mon Sep 17 00:00:00 2001 From: Ergyun Syuleyman Date: Wed, 24 Jun 2020 15:32:55 +0300 Subject: [PATCH] NY-10773: [AN]: Samsung App crash: AddToEndSingleStrategy.java line 23 com.arellomobile.mvp.viewstate.strategy.AddToEndSingleStrategy.beforeApply --- .../mvp/presenters/BasePresenter.java | 6 ++-- .../mvp/presenters/ChatPresenter.java | 31 +++++++++++++------ 2 files changed, 24 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/BasePresenter.java b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/BasePresenter.java index ed613959fb..778409c58f 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/BasePresenter.java +++ b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/BasePresenter.java @@ -193,9 +193,9 @@ public abstract class BasePresenter extends MvpPresenter< mDataManager.saveAccountAccessToken(accountAccessToken); } - public void initWheel() { - if (getViewState() != null) - getViewState().initWheelView(mDataManager.getConferenceSDK().isConferenceActive()); + public synchronized void initWheel() { + if (getAttachedViews().size() == 0) return; + getViewState().initWheelView(isConferenceActive()); } public void addDisposable(Disposable disposable) { diff --git a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/ChatPresenter.java b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/ChatPresenter.java index 53eda70485..31cdb20c10 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/ChatPresenter.java +++ b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/ChatPresenter.java @@ -1703,9 +1703,6 @@ public class ChatPresenter extends BaseChatPresenter { restoreScrollState(); } } - if (mRoom.updateContactAvatarInRoom(contact.avatar)) { - getViewState().setAvatar(contact.avatar); - } updateMuteState(!contact.isNotificationEnabled()); final ArrayList members = MemberModel.generateMembers(Collections.singletonList(contact), MemberModel.Statuses.MEMBER); @@ -1718,12 +1715,7 @@ public class ChatPresenter extends BaseChatPresenter { mRoom.readers = new ArrayList<>(contact.readers); if (!isEnabledNewPagination()) processUnreadState(); } - getViewState().setHeaderInfo(mRoom); - getViewState().updateMessageReadState(contact, getOwnRosterId()); - if (updateFooter) { - setFooterState(); - getViewState().initWheelView(isEnabledCallOptions()); - } + updateOnViewStateAfterContactEvent(contact, updateFooter); checkTranslateState(); } else { getViewState().setWaitingNetworkStatus(); @@ -1733,6 +1725,24 @@ public class ChatPresenter extends BaseChatPresenter { )); } + private void updateOnViewStateAfterContactEvent(ContactModel contact, boolean updateFooter) { + if (getAttachedViews().size() == 0) { + if (updateFooter) { + setFooterState(); + } + return; + } + if (mRoom.updateContactAvatarInRoom(contact.avatar)) { + getViewState().setAvatar(contact.avatar); + } + getViewState().setHeaderInfo(mRoom); + getViewState().updateMessageReadState(contact, getOwnRosterId()); + if (updateFooter) { + setFooterState(); + initWheel(); + } + } + private void updateContactStatus(boolean wasEmpty) { MemberModel member = mRoom.members.get(0); if (member != null) { @@ -4175,7 +4185,8 @@ public class ChatPresenter extends BaseChatPresenter { } } - public void refreshFooterState() { + public synchronized void refreshFooterState() { + if (getAttachedViews().size() == 0) return; switch (mFooterState) { case P2P_USUAL: case GROUP_USUAL: -- GitLab