fix chat position

This commit is contained in:
vivabelarus 2022-12-19 15:46:57 +03:00
parent d182362a60
commit 2525460c38
No known key found for this signature in database
GPG key ID: D8D8542F5B70C314
2 changed files with 26 additions and 1 deletions

View file

@ -1823,6 +1823,9 @@ public class ActionBarLayout extends FrameLayout implements INavigationLayout, F
previousFragment.setParentLayout(this);
View fragmentView = previousFragment.fragmentView;
if (fragmentView == null) {
if (!SharedConfig.isFakePasscodeActivated() && previousFragment instanceof ChatActivity) {
((ChatActivity)previousFragment).restoreStartLoadFromMessage();
}
fragmentView = previousFragment.createView(parentActivity);
} else {
ViewGroup parent = (ViewGroup) fragmentView.getParent();

View file

@ -732,6 +732,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
private boolean createUnreadMessageAfterIdLoading;
private boolean loadingFromOldPosition;
private float alertViewEnterProgress;
private boolean startLoadFromMessageRestored;
private boolean first = true;
private int first_unread_id;
@ -9954,7 +9955,16 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
int lastVisPos = chatLayoutManager.findLastVisibleItemPosition();
int top = 0;
MessageObject scrollToMessageObject = null;
if (firstVisPos != RecyclerView.NO_POSITION) {
if (startLoadFromMessageRestored) {
for (MessageObject message : messages) {
if (message.getId() == startLoadFromMessageId) {
scrollToMessageObject = message;
top = startLoadFromMessageOffset;
}
}
startLoadFromMessageRestored = false;
}
if (firstVisPos != RecyclerView.NO_POSITION && scrollToMessageObject == null) {
for (int i = firstVisPos; i <= lastVisPos; i++) {
View v = chatLayoutManager.findViewByPosition(i);
if (v instanceof ChatMessageCell) {
@ -26384,6 +26394,18 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
MediaController.getInstance().resetGoingToShowMessageObject();
}
public void restoreStartLoadFromMessage() {
SharedPreferences sharedPreferences = MessagesController.getNotificationsSettings(currentAccount);
int messageId = sharedPreferences.getInt("diditem" + NotificationsController.getSharedPrefKey(dialog_id, getTopicId()), 0);
if (messageId != 0) {
wasManualScroll = true;
loadingFromOldPosition = true;
startLoadFromMessageOffset = sharedPreferences.getInt("diditemo" + NotificationsController.getSharedPrefKey(dialog_id, getTopicId()), 0);
startLoadFromMessageId = messageId;
startLoadFromMessageRestored = true;
}
}
private void updateMessageListAccessibilityVisibility() {
if (currentEncryptedChat != null) {
return;