mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-08-08 08:31:13 +00:00
Merge branch 'master' of gitlab.com:peter-iakovlev/telegram-ios
This commit is contained in:
commit
14c595b53f
@ -500,12 +500,70 @@ public class StickerPickerScreen: ViewController {
|
||||
self.content = content
|
||||
|
||||
content.emoji.inputInteractionHolder.inputInteraction = EmojiPagerContentComponent.InputInteraction(
|
||||
performItemAction: { [weak self] _, item, _, _, _, _ in
|
||||
guard let strongSelf = self else {
|
||||
performItemAction: { [weak self] groupId, item, _, _, _, _ in
|
||||
guard let strongSelf = self, let controller = strongSelf.controller else {
|
||||
return
|
||||
}
|
||||
if let file = item.itemFile {
|
||||
let context = controller.context
|
||||
if groupId == AnyHashable("featuredTop"), let file = item.itemFile {
|
||||
let _ = (
|
||||
combineLatest(
|
||||
ChatEntityKeyboardInputNode.hasPremium(context: context, chatPeerId: controller.context.account.peerId, premiumIfSavedMessages: true),
|
||||
ChatEntityKeyboardInputNode.hasPremium(context: context, chatPeerId: controller.context.account.peerId, premiumIfSavedMessages: false)
|
||||
)
|
||||
|> take(1)
|
||||
|> deliverOnMainQueue).start(next: { [weak self] hasPremium, hasGlobalPremium in
|
||||
guard let self else {
|
||||
return
|
||||
}
|
||||
|
||||
let viewKey = PostboxViewKey.orderedItemList(id: Namespaces.OrderedItemList.CloudFeaturedEmojiPacks)
|
||||
let _ = (combineLatest(
|
||||
context.account.postbox.itemCollectionsView(orderedItemListCollectionIds: [], namespaces: [Namespaces.ItemCollection.CloudEmojiPacks], aroundIndex: nil, count: 10000000),
|
||||
context.account.postbox.combinedView(keys: [viewKey])
|
||||
)
|
||||
|> take(1)
|
||||
|> deliverOnMainQueue).start(next: { [weak self] emojiPacksView, views in
|
||||
guard let view = views.views[viewKey] as? OrderedItemListView else {
|
||||
return
|
||||
}
|
||||
guard let self else {
|
||||
return
|
||||
}
|
||||
|
||||
var installedCollectionIds = Set<ItemCollectionId>()
|
||||
for (id, _, _) in emojiPacksView.collectionInfos {
|
||||
installedCollectionIds.insert(id)
|
||||
}
|
||||
|
||||
let stickerPacks = view.items.map({ $0.contents.get(FeaturedStickerPackItem.self)! }).filter({
|
||||
!installedCollectionIds.contains($0.info.id)
|
||||
})
|
||||
|
||||
for featuredStickerPack in stickerPacks {
|
||||
if featuredStickerPack.topItems.contains(where: { $0.file.fileId == file.fileId }) {
|
||||
if let componentView = self.hostView.componentView as? StickerSelectionComponent.View {
|
||||
if let pagerView = componentView.keyboardView.view as? EntityKeyboardComponent.View, let emojiInputInteraction = self.content?.emoji.inputInteractionHolder.inputInteraction {
|
||||
pagerView.openCustomSearch(content: EmojiSearchContent(
|
||||
context: context,
|
||||
forceTheme: defaultDarkPresentationTheme,
|
||||
items: stickerPacks,
|
||||
initialFocusId: featuredStickerPack.info.id,
|
||||
hasPremiumForUse: hasPremium,
|
||||
hasPremiumForInstallation: hasGlobalPremium,
|
||||
parentInputInteraction: emojiInputInteraction
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
break
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
} else if let file = item.itemFile {
|
||||
strongSelf.controller?.completion(.file(file))
|
||||
strongSelf.controller?.dismiss(animated: true)
|
||||
} else if case let .staticEmoji(emoji) = item.content {
|
||||
if let image = generateImage(CGSize(width: 256.0, height: 256.0), scale: 1.0, rotatedContext: { size, context in
|
||||
context.clear(CGRect(origin: .zero, size: size))
|
||||
@ -528,8 +586,8 @@ public class StickerPickerScreen: ViewController {
|
||||
}) {
|
||||
strongSelf.controller?.completion(.image(image))
|
||||
}
|
||||
strongSelf.controller?.dismiss(animated: true)
|
||||
}
|
||||
strongSelf.controller?.dismiss(animated: true)
|
||||
},
|
||||
deleteBackwards: nil,
|
||||
openStickerSettings: nil,
|
||||
|
Loading…
x
Reference in New Issue
Block a user