mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
Suggest mentions from hints
This commit is contained in:
parent
f67e97d418
commit
01067bd1f2
@ -163,20 +163,35 @@ private func updatedContextQueryResultStateForQuery(context: AccountContext, inp
|
|||||||
}
|
}
|
||||||
|
|
||||||
let normalizedQuery = query.lowercased()
|
let normalizedQuery = query.lowercased()
|
||||||
let peers: Signal<(ChatPresentationInputQueryResult?) -> ChatPresentationInputQueryResult?, ChatContextQueryError> = context.engine.contacts.searchLocalPeers(query: normalizedQuery)
|
if normalizedQuery.isEmpty {
|
||||||
|> map { peersAndPresences -> (ChatPresentationInputQueryResult?) -> ChatPresentationInputQueryResult? in
|
let peers: Signal<(ChatPresentationInputQueryResult?) -> ChatPresentationInputQueryResult?, ChatContextQueryError> = context.engine.peers.recentPeers()
|
||||||
let peers = peersAndPresences.filter { peer in
|
|> map { recentPeers -> (ChatPresentationInputQueryResult?) -> ChatPresentationInputQueryResult? in
|
||||||
if let peer = peer.peer, case .user = peer, peer.addressName != nil {
|
if case let .peers(peers) = recentPeers {
|
||||||
return true
|
let peers = peers.filter { peer in
|
||||||
|
return peer.addressName != nil
|
||||||
|
}.compactMap { EnginePeer($0) }
|
||||||
|
return { _ in return .mentions(peers) }
|
||||||
} else {
|
} else {
|
||||||
return false
|
return { _ in return .mentions([]) }
|
||||||
}
|
}
|
||||||
}.compactMap { $0.peer }
|
}
|
||||||
return { _ in return .mentions(peers) }
|
|> castError(ChatContextQueryError.self)
|
||||||
|
return signal |> then(peers)
|
||||||
|
} else {
|
||||||
|
let peers: Signal<(ChatPresentationInputQueryResult?) -> ChatPresentationInputQueryResult?, ChatContextQueryError> = context.engine.contacts.searchLocalPeers(query: normalizedQuery)
|
||||||
|
|> map { peersAndPresences -> (ChatPresentationInputQueryResult?) -> ChatPresentationInputQueryResult? in
|
||||||
|
let peers = peersAndPresences.filter { peer in
|
||||||
|
if let peer = peer.peer, case .user = peer, peer.addressName != nil {
|
||||||
|
return true
|
||||||
|
} else {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}.compactMap { $0.peer }
|
||||||
|
return { _ in return .mentions(peers) }
|
||||||
|
}
|
||||||
|
|> castError(ChatContextQueryError.self)
|
||||||
|
return signal |> then(peers)
|
||||||
}
|
}
|
||||||
|> castError(ChatContextQueryError.self)
|
|
||||||
|
|
||||||
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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user