Suggest mentions from hints

This commit is contained in:
Ilya Laktyushin 2023-07-05 00:31:32 +02:00
parent f67e97d418
commit 01067bd1f2

View File

@ -163,6 +163,21 @@ private func updatedContextQueryResultStateForQuery(context: AccountContext, inp
} }
let normalizedQuery = query.lowercased() let normalizedQuery = query.lowercased()
if normalizedQuery.isEmpty {
let peers: Signal<(ChatPresentationInputQueryResult?) -> ChatPresentationInputQueryResult?, ChatContextQueryError> = context.engine.peers.recentPeers()
|> map { recentPeers -> (ChatPresentationInputQueryResult?) -> ChatPresentationInputQueryResult? in
if case let .peers(peers) = recentPeers {
let peers = peers.filter { peer in
return peer.addressName != nil
}.compactMap { EnginePeer($0) }
return { _ in return .mentions(peers) }
} else {
return { _ in return .mentions([]) }
}
}
|> castError(ChatContextQueryError.self)
return signal |> then(peers)
} else {
let peers: Signal<(ChatPresentationInputQueryResult?) -> ChatPresentationInputQueryResult?, ChatContextQueryError> = context.engine.contacts.searchLocalPeers(query: normalizedQuery) let peers: Signal<(ChatPresentationInputQueryResult?) -> ChatPresentationInputQueryResult?, ChatContextQueryError> = context.engine.contacts.searchLocalPeers(query: normalizedQuery)
|> map { peersAndPresences -> (ChatPresentationInputQueryResult?) -> ChatPresentationInputQueryResult? in |> map { peersAndPresences -> (ChatPresentationInputQueryResult?) -> ChatPresentationInputQueryResult? in
let peers = peersAndPresences.filter { peer in let peers = peersAndPresences.filter { peer in
@ -175,8 +190,8 @@ private func updatedContextQueryResultStateForQuery(context: AccountContext, inp
return { _ in return .mentions(peers) } return { _ in return .mentions(peers) }
} }
|> castError(ChatContextQueryError.self) |> castError(ChatContextQueryError.self)
return signal |> then(peers) return signal |> then(peers)
}
case let .emojiSearch(query, languageCode, range): case let .emojiSearch(query, languageCode, range):
let hasPremium = context.engine.data.subscribe(TelegramEngine.EngineData.Item.Peer.Peer(id: context.account.peerId)) let hasPremium = context.engine.data.subscribe(TelegramEngine.EngineData.Item.Peer.Peer(id: context.account.peerId))
|> map { peer -> Bool in |> map { peer -> Bool in