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 ed613959fb5287cef1f2486aaab5433c2d93e74a..778409c58fb8deff50d7065d20fc6ea575eb8f88 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 53eda70485be8bec49e56e8f0ec2e0d9369c12d2..31cdb20c102ed2cc1564f17671501b1b468b3e27 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: