diff --git a/submodules/InviteLinksUI/Sources/InviteRequestsSearchItem.swift b/submodules/InviteLinksUI/Sources/InviteRequestsSearchItem.swift index 73915f6467..d0c374f36d 100644 --- a/submodules/InviteLinksUI/Sources/InviteRequestsSearchItem.swift +++ b/submodules/InviteLinksUI/Sources/InviteRequestsSearchItem.swift @@ -469,8 +469,12 @@ public final class InviteRequestsSearchContainerNode: SearchDisplayControllerCon let searchQuery = self.searchQuery.get() |> mapToSignal { query -> Signal in if let query = query, !query.isEmpty { - return (.complete() |> delay(0.6, queue: Queue.mainQueue())) - |> then(.single(query)) + if query.count == 1 { + return .single(" ") + } else { + return (.complete() |> delay(0.6, queue: Queue.mainQueue())) + |> then(.single(query)) + } } else { return .single(query) } @@ -481,19 +485,26 @@ public final class InviteRequestsSearchContainerNode: SearchDisplayControllerCon guard let query = query, !query.isEmpty, let peer = peerViewMainPeer(peerView) else { return .single(nil) } - updateActivity(true) - let requestsContext = context.engine.peers.peerInvitationImporters(peerId: peerId, subject: .requests(query: query)) - let _ = previousRequestsContext.swap(requestsContext) - let isGroup: Bool - if let channel = peer as? TelegramChannel, case .broadcast = channel.info { - isGroup = false + let signal: Signal + if query == " " { + signal = .single(PeerInvitationImportersState.Loading) } else { - isGroup = true + updateActivity(true) + let requestsContext = context.engine.peers.peerInvitationImporters(peerId: peerId, subject: .requests(query: query)) + let _ = previousRequestsContext.swap(requestsContext) + signal = requestsContext.state } - - return combineLatest(requestsContext.state, presentationDataPromise.get(), processedPeerIds.get()) + + return combineLatest(signal, presentationDataPromise.get(), processedPeerIds.get()) |> mapToSignal { state, presentationData, processedPeerIds -> Signal<[InviteRequestsSearchEntry]?, NoError> in + let isGroup: Bool + if let channel = peer as? TelegramChannel, case .broadcast = channel.info { + isGroup = false + } else { + isGroup = true + } + var entries: [InviteRequestsSearchEntry] = [] var index = 0 if !state.hasLoadedOnce { diff --git a/submodules/TelegramCore/Sources/TelegramEngine/Peers/InvitationLinks.swift b/submodules/TelegramCore/Sources/TelegramEngine/Peers/InvitationLinks.swift index 7d81a982cf..3fe60589af 100644 --- a/submodules/TelegramCore/Sources/TelegramEngine/Peers/InvitationLinks.swift +++ b/submodules/TelegramCore/Sources/TelegramEngine/Peers/InvitationLinks.swift @@ -663,6 +663,8 @@ public struct PeerInvitationImportersState: Equatable { } public static var Empty = PeerInvitationImportersState(importers: [], isLoadingMore: false, hasLoadedOnce: true, canLoadMore: false, count: 0) + + public static var Loading = PeerInvitationImportersState(importers: [], isLoadingMore: false, hasLoadedOnce: false, canLoadMore: false, count: 0) } final class CachedPeerInvitationImporters: Codable {