diff --git a/submodules/ReactionSelectionNode/Sources/ReactionContextNode.swift b/submodules/ReactionSelectionNode/Sources/ReactionContextNode.swift index 1ec1793cbe..20f0abd45f 100644 --- a/submodules/ReactionSelectionNode/Sources/ReactionContextNode.swift +++ b/submodules/ReactionSelectionNode/Sources/ReactionContextNode.swift @@ -472,7 +472,7 @@ public final class ReactionContextNode: ASDisplayNode, UIScrollViewDelegate { var emojiContent = emojiContent if let emojiSearchResult = emojiSearchState.result { var emptySearchResults: EmojiPagerContentComponent.EmptySearchResults? - if !emojiSearchResult.groups.contains(where: { !$0.items.isEmpty }) { + if !emojiSearchResult.groups.contains(where: { !$0.items.isEmpty || $0.fillWithLoadingPlaceholders }) { if strongSelf.stableEmptyResultEmoji == nil { strongSelf.stableEmptyResultEmoji = strongSelf.emptyResultEmojis.randomElement() } @@ -1545,7 +1545,25 @@ public final class ReactionContextNode: ASDisplayNode, UIScrollViewDelegate { return } if group.items.isEmpty && !result.isFinalResult { - self.emojiSearchStateValue.isSearching = true + //self.emojiSearchStateValue.isSearching = true + self.emojiSearchStateValue = EmojiSearchState(result: EmojiSearchResult(groups: [ + EmojiPagerContentComponent.ItemGroup( + supergroupId: "search", + groupId: "search", + title: nil, + subtitle: nil, + actionButtonTitle: nil, + isFeatured: false, + isPremiumLocked: false, + isEmbedded: false, + hasClear: false, + collapsedLineCount: nil, + displayPremiumBadges: false, + headerItem: nil, + fillWithLoadingPlaceholders: true, + items: [] + ) + ], id: AnyHashable(value), version: version, isPreset: true), isSearching: false) return } diff --git a/submodules/TelegramUI/Components/AvatarEditorScreen/Sources/AvatarEditorScreen.swift b/submodules/TelegramUI/Components/AvatarEditorScreen/Sources/AvatarEditorScreen.swift index 4200658310..d2cee62f73 100644 --- a/submodules/TelegramUI/Components/AvatarEditorScreen/Sources/AvatarEditorScreen.swift +++ b/submodules/TelegramUI/Components/AvatarEditorScreen/Sources/AvatarEditorScreen.swift @@ -530,7 +530,25 @@ final class AvatarEditorScreenComponent: Component { return } if group.items.isEmpty && !result.isFinalResult { - self.emojiSearchStateValue.isSearching = true + //self.emojiSearchStateValue.isSearching = true + self.emojiSearchStateValue = EmojiSearchState(result: EmojiSearchResult(groups: [ + EmojiPagerContentComponent.ItemGroup( + supergroupId: "search", + groupId: "search", + title: nil, + subtitle: nil, + actionButtonTitle: nil, + isFeatured: false, + isPremiumLocked: false, + isEmbedded: false, + hasClear: false, + collapsedLineCount: nil, + displayPremiumBadges: false, + headerItem: nil, + fillWithLoadingPlaceholders: true, + items: [] + ) + ], id: AnyHashable(value), version: version, isPreset: true), isSearching: false) return } @@ -910,7 +928,7 @@ final class AvatarEditorScreenComponent: Component { if let searchResult = emojiSearchState.result { let presentationData = context.sharedContext.currentPresentationData.with { $0 } var emptySearchResults: EmojiPagerContentComponent.EmptySearchResults? - if !searchResult.groups.contains(where: { !$0.items.isEmpty }) { + if !searchResult.groups.contains(where: { !$0.items.isEmpty || $0.fillWithLoadingPlaceholders }) { emptySearchResults = EmojiPagerContentComponent.EmptySearchResults( text: presentationData.strings.EmojiSearch_SearchEmojiEmptyResult, iconFile: nil diff --git a/submodules/TelegramUI/Components/EmojiStatusSelectionComponent/Sources/EmojiStatusSelectionComponent.swift b/submodules/TelegramUI/Components/EmojiStatusSelectionComponent/Sources/EmojiStatusSelectionComponent.swift index aedaa8273c..ef73e6e853 100644 --- a/submodules/TelegramUI/Components/EmojiStatusSelectionComponent/Sources/EmojiStatusSelectionComponent.swift +++ b/submodules/TelegramUI/Components/EmojiStatusSelectionComponent/Sources/EmojiStatusSelectionComponent.swift @@ -383,7 +383,7 @@ public final class EmojiStatusSelectionController: ViewController { var emojiContent = emojiContent if let emojiSearchResult = emojiSearchState.result { var emptySearchResults: EmojiPagerContentComponent.EmptySearchResults? - if !emojiSearchResult.groups.contains(where: { !$0.items.isEmpty }) { + if !emojiSearchResult.groups.contains(where: { !$0.items.isEmpty || $0.fillWithLoadingPlaceholders }) { if strongSelf.stableEmptyResultEmoji == nil { strongSelf.stableEmptyResultEmoji = strongSelf.emptyResultEmojis.randomElement() } @@ -638,7 +638,25 @@ public final class EmojiStatusSelectionController: ViewController { return } if group.items.isEmpty && !result.isFinalResult { - self.emojiSearchStateValue.isSearching = true + //self.emojiSearchStateValue.isSearching = true + self.emojiSearchStateValue = EmojiSearchState(result: EmojiSearchResult(groups: [ + EmojiPagerContentComponent.ItemGroup( + supergroupId: "search", + groupId: "search", + title: nil, + subtitle: nil, + actionButtonTitle: nil, + isFeatured: false, + isPremiumLocked: false, + isEmbedded: false, + hasClear: false, + collapsedLineCount: nil, + displayPremiumBadges: false, + headerItem: nil, + fillWithLoadingPlaceholders: true, + items: [] + ) + ], id: AnyHashable(value), version: version, isPreset: true), isSearching: false) return } diff --git a/submodules/TelegramUI/Components/EntityKeyboard/Sources/EmojiPagerContentComponent.swift b/submodules/TelegramUI/Components/EntityKeyboard/Sources/EmojiPagerContentComponent.swift index 77e737ac36..f1313369f4 100644 --- a/submodules/TelegramUI/Components/EntityKeyboard/Sources/EmojiPagerContentComponent.swift +++ b/submodules/TelegramUI/Components/EntityKeyboard/Sources/EmojiPagerContentComponent.swift @@ -4421,7 +4421,7 @@ public final class EmojiPagerContentComponent: Component { } public func scrollToItemGroup(id supergroupId: AnyHashable, subgroupId: Int32?, animated: Bool) { - guard let component = self.component, let itemGroup = component.contentItemGroups.first(where: { $0.supergroupId == supergroupId }), let pagerEnvironment = self.pagerEnvironment, let itemLayout = self.itemLayout else { + guard let component = self.component, let pagerEnvironment = self.pagerEnvironment, let itemLayout = self.itemLayout else { return } @@ -4430,6 +4430,10 @@ public final class EmojiPagerContentComponent: Component { return } + guard let itemGroup = component.contentItemGroups.first(where: { $0.supergroupId == supergroupId }) else { + return + } + for groupIndex in 0 ..< itemLayout.itemGroupLayouts.count { let group = itemLayout.itemGroupLayouts[groupIndex] diff --git a/submodules/TelegramUI/Components/EntityKeyboard/Sources/EmojiSearchContent.swift b/submodules/TelegramUI/Components/EntityKeyboard/Sources/EmojiSearchContent.swift index b67a811ef7..255699b257 100644 --- a/submodules/TelegramUI/Components/EntityKeyboard/Sources/EmojiSearchContent.swift +++ b/submodules/TelegramUI/Components/EntityKeyboard/Sources/EmojiSearchContent.swift @@ -359,7 +359,25 @@ public final class EmojiSearchContent: ASDisplayNode, EntitySearchContainerNode return } if group.items.isEmpty && !result.isFinalResult { - self.emojiSearchStateValue.isSearching = true + //self.emojiSearchStateValue.isSearching = true + self.emojiSearchStateValue = EmojiSearchState(result: EmojiSearchResult(groups: [ + EmojiPagerContentComponent.ItemGroup( + supergroupId: "search", + groupId: "search", + title: nil, + subtitle: nil, + actionButtonTitle: nil, + isFeatured: false, + isPremiumLocked: false, + isEmbedded: false, + hasClear: false, + collapsedLineCount: nil, + displayPremiumBadges: false, + headerItem: nil, + fillWithLoadingPlaceholders: true, + items: [] + ) + ], id: AnyHashable(value), version: version, isPreset: true), isSearching: false) return } @@ -444,7 +462,7 @@ public final class EmojiSearchContent: ASDisplayNode, EntitySearchContainerNode if let emojiSearchResult = self.immediateEmojiSearchState.result { var emptySearchResults: EmojiPagerContentComponent.EmptySearchResults? - if !emojiSearchResult.groups.contains(where: { !$0.items.isEmpty }) { + if !emojiSearchResult.groups.contains(where: { !$0.items.isEmpty || $0.fillWithLoadingPlaceholders }) { emptySearchResults = EmojiPagerContentComponent.EmptySearchResults( text: self.presentationData.strings.EmojiSearch_SearchEmojiEmptyResult, iconFile: nil