rpc: fix channel pinned search for Android

(cherry picked from commit 70978db98c3af3fe72100fa6646780c7a5a13daa)
This commit is contained in:
A 2026-06-08 22:56:36 +08:00
parent b4e47c894f
commit 3642e37cfe
8 changed files with 97 additions and 16 deletions

View file

@ -453,6 +453,12 @@ func (r *Router) registerMessages(d *tg.ServerDispatcher) {
}
return tgChannelHistoryMessages(userID, history), nil
}
if _, ok := req.Filter.(*tg.InputMessagesFilterPinned); ok {
if _, err := r.checkedDomainPeerFromInputPeer(ctx, userID, req.Peer); err != nil {
return nil, err
}
return &tg.MessagesMessages{}, nil
}
if r.deps.Messages == nil {
return messagesNotModifiedOrEmpty(req.Hash), nil
}
@ -5746,16 +5752,17 @@ func (r *Router) channelHistoryFilterFromSearchRequest(userID int64, req *tg.Mes
limit = 100
}
filter := domain.ChannelHistoryFilter{
ChannelID: channelID,
Query: req.Q,
OffsetID: req.OffsetID,
AddOffset: domain.ClampMessageHistoryAddOffset(req.AddOffset),
Limit: limit,
MinDate: req.MinDate,
MaxDate: req.MaxDate,
MaxID: req.MaxID,
MinID: req.MinID,
Hash: req.Hash,
ChannelID: channelID,
Query: req.Q,
PinnedOnly: messagesSearchFilterPinned(req.Filter),
OffsetID: req.OffsetID,
AddOffset: domain.ClampMessageHistoryAddOffset(req.AddOffset),
Limit: limit,
MinDate: req.MinDate,
MaxDate: req.MaxDate,
MaxID: req.MaxID,
MinID: req.MinID,
Hash: req.Hash,
}
if req.FromID != nil {
from, ok := r.domainPeerFromInputPeer(userID, req.FromID)
@ -5767,6 +5774,11 @@ func (r *Router) channelHistoryFilterFromSearchRequest(userID int64, req *tg.Mes
return filter, true
}
func messagesSearchFilterPinned(filter tg.MessagesFilterClass) bool {
_, ok := filter.(*tg.InputMessagesFilterPinned)
return ok
}
func searchFilterNeedsMediaStore(filter tg.MessagesFilterClass) bool {
switch filter.(type) {
case nil, *tg.InputMessagesFilterEmpty: