simplified reInit logic
This commit is contained in:
parent
bd2417e792
commit
fe8e131e3a
|
@ -369,7 +369,7 @@ public class ConversationActivity extends XmppActivity implements OnConversation
|
|||
} else {
|
||||
mainNeedsRefresh = true;
|
||||
}
|
||||
conversationFragment.reInit(conversation, extras);
|
||||
conversationFragment.reInit(conversation, extras == null ? new Bundle() : extras);
|
||||
if (mainNeedsRefresh) {
|
||||
refreshFragment(R.id.main_fragment);
|
||||
} else {
|
||||
|
|
|
@ -1624,8 +1624,8 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke
|
|||
public void onStart() {
|
||||
super.onStart();
|
||||
if (this.reInitRequiredOnStart) {
|
||||
reInit(conversation);
|
||||
final Bundle extras = pendingExtras.pop();
|
||||
reInit(conversation, extras != null);
|
||||
if (extras != null) {
|
||||
processExtras(extras);
|
||||
}
|
||||
|
@ -1676,7 +1676,7 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke
|
|||
|
||||
public void reInit(Conversation conversation, Bundle extras) {
|
||||
this.saveMessageDraftStopAudioPlayer();
|
||||
if (this.reInit(conversation, false, extras != null)) {
|
||||
if (this.reInit(conversation, extras != null)) {
|
||||
if (extras != null) {
|
||||
processExtras(extras);
|
||||
}
|
||||
|
@ -1688,14 +1688,10 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke
|
|||
}
|
||||
|
||||
private void reInit(Conversation conversation) {
|
||||
reInit(conversation, false, false);
|
||||
reInit(conversation, false);
|
||||
}
|
||||
|
||||
private void reInitRestore(Conversation conversation) {
|
||||
reInit(conversation, true, false);
|
||||
}
|
||||
|
||||
private boolean reInit(Conversation conversation, boolean restore, boolean hasExtras) {
|
||||
private boolean reInit(final Conversation conversation, final boolean hasExtras) {
|
||||
if (conversation == null) {
|
||||
return false;
|
||||
}
|
||||
|
@ -1704,14 +1700,8 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke
|
|||
if (this.activity == null || this.binding == null) {
|
||||
return false;
|
||||
}
|
||||
Log.d(Config.LOGTAG, "reInit(restore=" + Boolean.toString(restore) + ", hasExtras="+Boolean.toString(hasExtras)+")");
|
||||
|
||||
final boolean fullReset = !restore && !hasExtras;
|
||||
|
||||
Log.d(Config.LOGTAG,"reInit(hasExtras="+Boolean.toString(hasExtras)+")");
|
||||
setupIme();
|
||||
if (fullReset) {
|
||||
this.conversation.trim();
|
||||
}
|
||||
|
||||
this.binding.textSendButton.setContentDescription(activity.getString(R.string.send_message_to_x, conversation.getName()));
|
||||
this.binding.textinput.setKeyboardListener(null);
|
||||
|
@ -1719,16 +1709,10 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke
|
|||
this.binding.textinput.append(this.conversation.getNextMessage());
|
||||
this.binding.textinput.setKeyboardListener(this);
|
||||
messageListAdapter.updatePreferences();
|
||||
if (fullReset) {
|
||||
this.binding.messagesView.setAdapter(messageListAdapter);
|
||||
}
|
||||
refresh(false);
|
||||
this.conversation.messagesLoaded.set(true);
|
||||
|
||||
//usually on a restore we don’t want to jump unless there is no scroll state to restore anyway
|
||||
//on a view intent (indicated by hasExtras) we always want to jump
|
||||
final boolean jump = (!restore || pendingScrollState.peek() == null) || hasExtras;
|
||||
if (jump) {
|
||||
if (hasExtras) {
|
||||
synchronized (this.messageList) {
|
||||
Log.d(Config.LOGTAG,"jump to first unread message");
|
||||
final Message first = conversation.getFirstUnreadMessage();
|
||||
|
@ -2350,7 +2334,7 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke
|
|||
clearPending();
|
||||
return;
|
||||
}
|
||||
reInitRestore(conversation);
|
||||
reInit(conversation);
|
||||
ScrollState scrollState = pendingScrollState.pop();
|
||||
if (scrollState != null) {
|
||||
setScrollPosition(scrollState);
|
||||
|
|
Loading…
Reference in New Issue