fix archive unpin bug

This commit is contained in:
Riko Sakurauchi 2019-06-17 11:38:14 +08:00
parent 311e6c514e
commit 51cf9ca609
No known key found for this signature in database
GPG Key ID: 25AC0345B92902AF
2 changed files with 20 additions and 2 deletions

View File

@ -1123,7 +1123,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter.
@Override
public int scrollVerticallyBy(int dy, RecyclerView.Recycler recycler, RecyclerView.State state) {
if (listView.getAdapter() == dialogsAdapter && (dialogsType == 0 || (dialogsType >= 7 && dialogsType <= 11)) && !onlySelect && !allowScrollToHiddenView && folderId == 0 && dy < 0 && getMessagesController().hasHiddenArchive()) {
if (!allowScrollToHiddenView && dy < 0 && hasHiddenArchive()) {
int currentPosition = layoutManager.findFirstVisibleItemPosition();
if (currentPosition == 0) {
View view = layoutManager.findViewByPosition(currentPosition);
@ -2040,7 +2040,10 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter.
}
private boolean hasHiddenArchive() {
return listView.getAdapter() == dialogsAdapter && !onlySelect && (dialogsType == 0 || (dialogsType >= 7 && dialogsType <= 11)) && folderId == 0 && getMessagesController().hasHiddenArchive();
return listView.getAdapter() == dialogsAdapter && !onlySelect
&& (dialogsType == 0 || (dialogsType >= 7 && dialogsType <= 11))
&& folderId == 0
&& FilterPopup.getInstance(currentAccount).hasHiddenArchive(dialogsType);
}
private boolean waitingForDialogsAnimationEnd() {

View File

@ -23,6 +23,7 @@ import org.telegram.messenger.DialogObject;
import org.telegram.messenger.LocaleController;
import org.telegram.messenger.MessagesController;
import org.telegram.messenger.R;
import org.telegram.messenger.SharedConfig;
import org.telegram.messenger.UserConfig;
import org.telegram.tgnet.TLRPC;
import org.telegram.ui.ActionBar.ActionBar;
@ -108,6 +109,20 @@ public class FilterPopup {
}
}
public boolean hasHiddenArchive(int type) {
if (!SharedConfig.archiveHidden)
return false;
ArrayList<TLRPC.Dialog> dialogs = getDialogs(type, 0);
if (dialogs == null)
return MessagesController.getInstance(currentAccount).hasHiddenArchive();
for (TLRPC.Dialog dialog : dialogs) {
if (dialog instanceof TLRPC.TL_dialogFolder) {
return true;
}
}
return false;
}
public ArrayList<TLRPC.Dialog> getDialogs(int type, int folderId) {
MessagesController messagesController = AccountInstance.getInstance(currentAccount).getMessagesController();
ArrayList<TLRPC.Dialog> allDialogs = new ArrayList<>(messagesController.getDialogs(folderId));