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
|
self.content = content
|
||||||
|
|
||||||
content.emoji.inputInteractionHolder.inputInteraction = EmojiPagerContentComponent.InputInteraction(
|
content.emoji.inputInteractionHolder.inputInteraction = EmojiPagerContentComponent.InputInteraction(
|
||||||
performItemAction: { [weak self] _, item, _, _, _, _ in
|
performItemAction: { [weak self] groupId, item, _, _, _, _ in
|
||||||
guard let strongSelf = self else {
|
guard let strongSelf = self, let controller = strongSelf.controller else {
|
||||||
return
|
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?.completion(.file(file))
|
||||||
|
strongSelf.controller?.dismiss(animated: true)
|
||||||
} else if case let .staticEmoji(emoji) = item.content {
|
} 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
|
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))
|
context.clear(CGRect(origin: .zero, size: size))
|
||||||
@ -528,8 +586,8 @@ public class StickerPickerScreen: ViewController {
|
|||||||
}) {
|
}) {
|
||||||
strongSelf.controller?.completion(.image(image))
|
strongSelf.controller?.completion(.image(image))
|
||||||
}
|
}
|
||||||
}
|
|
||||||
strongSelf.controller?.dismiss(animated: true)
|
strongSelf.controller?.dismiss(animated: true)
|
||||||
|
}
|
||||||
},
|
},
|
||||||
deleteBackwards: nil,
|
deleteBackwards: nil,
|
||||||
openStickerSettings: nil,
|
openStickerSettings: nil,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user