Skip to content

Commit

Permalink
feat: support filter search by types
Browse files Browse the repository at this point in the history
Thanks to @NekoUpdates

Co-authored-by: tehcneko <chsqwyx@gmail.com>
  • Loading branch information
2 people authored and NextAlone committed Apr 11, 2024
1 parent 5733bda commit cc61537
Show file tree
Hide file tree
Showing 4 changed files with 107 additions and 25 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3435,6 +3435,7 @@ public void processStickerSetInstallResultArchive(BaseFragment baseFragment, boo
private SparseArray<MessageObject>[] searchServerResultMessagesMap = new SparseArray[]{new SparseArray<>(), new SparseArray<>()};
private ArrayList<MessageObject> deletedFromResultMessages = new ArrayList<>();
private String lastSearchQuery;
private TLRPC.MessagesFilter lastSearchFilter;
private int lastReturnedNum;
private boolean loadingMoreSearchMessages;
private boolean loadingSearchLocal;
Expand Down Expand Up @@ -3552,12 +3553,12 @@ public boolean isMessageFound(int messageId, boolean mergeDialog) {
return searchServerResultMessagesMap[mergeDialog ? 1 : 0].indexOfKey(messageId) >= 0;
}

public void searchMessagesInChat(String query, long dialogId, long mergeDialogId, int guid, int direction, long replyMessageId, TLRPC.User user, TLRPC.Chat chat, ReactionsLayoutInBubble.VisibleReaction reaction) {
searchMessagesInChat(query, dialogId, mergeDialogId, guid, direction, replyMessageId, false, user, chat, true, reaction, false);
public void searchMessagesInChat(String query, long dialogId, long mergeDialogId, int guid, int direction, long replyMessageId, TLRPC.User user, TLRPC.Chat chat, ReactionsLayoutInBubble.VisibleReaction reaction, TLRPC.MessagesFilter filter) {
searchMessagesInChat(query, dialogId, mergeDialogId, guid, direction, replyMessageId, false, user, chat, true, reaction, false, filter);
}

public void searchMessagesInChat(String query, long dialogId, long mergeDialogId, int guid, int direction, long replyMessageId, TLRPC.User user, TLRPC.Chat chat, ReactionsLayoutInBubble.VisibleReaction reaction, boolean firstSearch) {
searchMessagesInChat(query, dialogId, mergeDialogId, guid, direction, replyMessageId, false, user, chat, true, reaction, firstSearch);
public void searchMessagesInChat(String query, long dialogId, long mergeDialogId, int guid, int direction, long replyMessageId, TLRPC.User user, TLRPC.Chat chat, ReactionsLayoutInBubble.VisibleReaction reaction, boolean firstSearch, TLRPC.MessagesFilter filter) {
searchMessagesInChat(query, dialogId, mergeDialogId, guid, direction, replyMessageId, false, user, chat, true, reaction, firstSearch, filter);
}

public void jumpToSearchedMessage(int guid, int index) {
Expand Down Expand Up @@ -3610,19 +3611,19 @@ public void loadMoreSearchMessages(boolean fromList, boolean force) {
int temp = lastReturnedNum;
lastReturnedNum = searchResultMessages.size();
loadingMoreSearchMessages = true;
searchMessagesInChat(null, lastDialogId, lastMergeDialogId, lastGuid, 1, lastReplyMessageId, false, lastSearchUser, lastSearchChat, false, lastReaction);
searchMessagesInChat(null, lastDialogId, lastMergeDialogId, lastGuid, 1, lastReplyMessageId, false, lastSearchUser, lastSearchChat, false, lastReaction, lastSearchFilter);
lastReturnedNum = temp;
}

public boolean isSearchLoading() {
return reqId != 0;
}
public void searchMessagesInChat(String query, long dialogId, long mergeDialogId, int guid, int direction, long replyMessageId, boolean internal, TLRPC.User user, TLRPC.Chat chat, boolean jumpToMessage, ReactionsLayoutInBubble.VisibleReaction reaction) {
searchMessagesInChat(query, dialogId, mergeDialogId, guid, direction, replyMessageId, internal, user, chat, jumpToMessage, reaction, false);

public void searchMessagesInChat(String query, long dialogId, long mergeDialogId, int guid, int direction, long replyMessageId, boolean internal, TLRPC.User user, TLRPC.Chat chat, boolean jumpToMessage, ReactionsLayoutInBubble.VisibleReaction reaction, TLRPC.MessagesFilter filter) {
searchMessagesInChat(query, dialogId, mergeDialogId, guid, direction, replyMessageId, internal, user, chat, jumpToMessage, reaction, false, filter);
}
public void searchMessagesInChat(String query, long dialogId, long mergeDialogId, int guid, int direction, long replyMessageId, boolean internal, TLRPC.User user, TLRPC.Chat chat, boolean jumpToMessage, ReactionsLayoutInBubble.VisibleReaction reaction, boolean firstSearch) {

public void searchMessagesInChat(String query, long dialogId, long mergeDialogId, int guid, int direction, long replyMessageId, boolean internal, TLRPC.User user, TLRPC.Chat chat, boolean jumpToMessage, ReactionsLayoutInBubble.VisibleReaction reaction, boolean firstSearch, TLRPC.MessagesFilter filter) {
int max_id = 0;
long queryWithDialog = dialogId;
boolean firstQuery = !internal;
Expand Down Expand Up @@ -3727,19 +3728,23 @@ public void searchMessagesInChat(String query, long dialogId, long mergeDialogId
req.saved_reaction.add(reaction.toTLReaction());
req.flags |= 8;
}
req.filter = new TLRPC.TL_inputMessagesFilterEmpty();
if (filter == null) {
req.filter = new TLRPC.TL_inputMessagesFilterEmpty();
} else {
req.filter = filter;
}
mergeReqId = getConnectionsManager().sendRequest(req, (response, error) -> AndroidUtilities.runOnUIThread(() -> {
if (lastMergeDialogId == mergeDialogId) {
mergeReqId = 0;
if (response != null) {
TLRPC.messages_Messages res = (TLRPC.messages_Messages) response;
messagesSearchEndReached[1] = res.messages.isEmpty();
messagesSearchCount[1] = res instanceof TLRPC.TL_messages_messagesSlice ? res.count : res.messages.size();
searchMessagesInChat(req.q, dialogId, mergeDialogId, guid, direction, replyMessageId, true, user, chat, jumpToMessage, reaction);
searchMessagesInChat(req.q, dialogId, mergeDialogId, guid, direction, replyMessageId, true, user, chat, jumpToMessage, reaction, filter);
} else {
messagesSearchEndReached[1] = true;
messagesSearchCount[1] = 0;
searchMessagesInChat(req.q, dialogId, mergeDialogId, guid, direction, replyMessageId, true, user, chat, jumpToMessage, reaction);
searchMessagesInChat(req.q, dialogId, mergeDialogId, guid, direction, replyMessageId, true, user, chat, jumpToMessage, reaction, filter);
}
}
}), ConnectionsManager.RequestFlagFailOnServerErrors);
Expand All @@ -3756,6 +3761,7 @@ public void searchMessagesInChat(String query, long dialogId, long mergeDialogId
loadingMoreSearchMessages = false;
return;
}
lastSearchFilter = filter;
lastGuid = guid;
lastDialogId = dialogId;
lastSearchUser = user;
Expand Down Expand Up @@ -3812,7 +3818,11 @@ public void searchMessagesInChat(String query, long dialogId, long mergeDialogId
req.saved_reaction.add(reaction.toTLReaction());
req.flags |= 8;
}
req.filter = new TLRPC.TL_inputMessagesFilterEmpty();
if (filter == null) {
req.filter = new TLRPC.TL_inputMessagesFilterEmpty();
} else {
req.filter = filter;
}
lastSearchQuery = query;
long queryWithDialogFinal = queryWithDialog;
String finalQuery = query;
Expand Down Expand Up @@ -3884,7 +3894,7 @@ public void searchMessagesInChat(String query, long dialogId, long mergeDialogId
}
}
if (queryWithDialogFinal == dialogId && messagesSearchEndReached[0] && mergeDialogId != 0 && !messagesSearchEndReached[1]) {
searchMessagesInChat(lastSearchQuery, dialogId, mergeDialogId, guid, 0, replyMessageId, true, user, chat, jumpToMessage, lastReaction);
searchMessagesInChat(lastSearchQuery, dialogId, mergeDialogId, guid, 0, replyMessageId, true, user, chat, jumpToMessage, lastReaction, lastSearchFilter);
}
};
if (isSaved) {
Expand Down
Loading

0 comments on commit cc61537

Please sign in to comment.