From 51708d526dd83712b8a94e2053db604477ba83c5 Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Wed, 3 Jul 2019 17:16:50 +0200 Subject: [PATCH] Fixed action buttons overlapping animated sticker --- .../TelegramCore/SearchStickers.swift | 30 ++++++++++++++++--- .../ChatMessageAnimatedStickerItemNode.swift | 2 +- 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/submodules/TelegramCore/TelegramCore/SearchStickers.swift b/submodules/TelegramCore/TelegramCore/SearchStickers.swift index 494337b030..fa7acc8d07 100644 --- a/submodules/TelegramCore/TelegramCore/SearchStickers.swift +++ b/submodules/TelegramCore/TelegramCore/SearchStickers.swift @@ -181,12 +181,23 @@ public func searchStickers(account: Account, query: String, scope: SearchSticker return .single(tempResult) } let currentItems = Set(localItems.map { $0.file.fileId }) + if let cached = cached { + var cachedItems: [FoundStickerItem] = [] + var cachedAnimatedItems: [FoundStickerItem] = [] + for file in cached.items { if !currentItems.contains(file.fileId) { - tempResult.append(FoundStickerItem(file: file, stringRepresentations: [])) + if file.isAnimatedSticker { + cachedAnimatedItems.append(FoundStickerItem(file: file, stringRepresentations: [])) + } else { + cachedItems.append(FoundStickerItem(file: file, stringRepresentations: [])) + } } } + + tempResult.append(contentsOf: cachedAnimatedItems) + tempResult.append(contentsOf: cachedItems) } let remote = account.network.request(Api.functions.messages.getStickers(emoticon: query, hash: cached?.hash ?? 0)) @@ -197,7 +208,10 @@ public func searchStickers(account: Account, query: String, scope: SearchSticker return account.postbox.transaction { transaction -> [FoundStickerItem] in switch result { case let .stickers(hash, stickers): - var items: [FoundStickerItem] = localItems + var items: [FoundStickerItem] = [] + var animatedItems: [FoundStickerItem] = [] + + var result: [FoundStickerItem] = localItems let currentItems = Set(items.map { $0.file.fileId }) var files: [TelegramMediaFile] = [] @@ -205,13 +219,21 @@ public func searchStickers(account: Account, query: String, scope: SearchSticker if let file = telegramMediaFileFromApiDocument(sticker), let id = file.id { files.append(file) if !currentItems.contains(id) { - items.append(FoundStickerItem(file: file, stringRepresentations: [])) + if file.isAnimatedSticker { + animatedItems.append(FoundStickerItem(file: file, stringRepresentations: [])) + } else { + items.append(FoundStickerItem(file: file, stringRepresentations: [])) + } } } } + + result.append(contentsOf: animatedItems) + result.append(contentsOf: items) + transaction.putItemCacheEntry(id: ItemCacheEntryId(collectionId: Namespaces.CachedItemCollection.cachedStickerQueryResults, key: CachedStickerQueryResult.cacheKey(query)), entry: CachedStickerQueryResult(items: files, hash: hash), collectionSpec: collectionSpec) - return items + return result case .stickersNotModified: break } diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageAnimatedStickerItemNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageAnimatedStickerItemNode.swift index 63526889be..fb276b312c 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageAnimatedStickerItemNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageAnimatedStickerItemNode.swift @@ -493,7 +493,7 @@ class ChatMessageAnimatedStickerItemNode: ChatMessageItemView { } let actionButtonsNode = actionButtonsSizeAndApply.1(animated) let previousFrame = actionButtonsNode.frame - let actionButtonsFrame = CGRect(origin: CGPoint(x: imageFrame.minX, y: imageFrame.maxY - 10.0), size: actionButtonsSizeAndApply.0) + let actionButtonsFrame = CGRect(origin: CGPoint(x: imageFrame.minX, y: imageFrame.maxY), size: actionButtonsSizeAndApply.0) actionButtonsNode.frame = actionButtonsFrame if actionButtonsNode !== strongSelf.actionButtonsNode { strongSelf.actionButtonsNode = actionButtonsNode