[WIP] Animated emoji

This commit is contained in:
Ali
2022-07-08 19:53:20 +02:00
parent 1ac654e8b2
commit ed59ead31e
108 changed files with 1005 additions and 678 deletions

View File

@@ -0,0 +1,5 @@
import Foundation
import Postbox
import TelegramApi
import SwiftSignalKit

View File

@@ -1,5 +1,6 @@
import SwiftSignalKit
import Postbox
import TelegramApi
public extension TelegramEngine {
final class Stickers {
@@ -155,5 +156,36 @@ public extension TelegramEngine {
}
|> ignoreValues
}
public func resolveInlineSticker(fileId: Int64) -> Signal<TelegramMediaFile?, NoError> {
return self.account.postbox.transaction { transaction -> TelegramMediaFile? in
return transaction.getMedia(MediaId(namespace: Namespaces.Media.CloudFile, id: fileId)) as? TelegramMediaFile
}
|> mapToSignal { cachedFile -> Signal<TelegramMediaFile?, NoError> in
if let cachedFile = cachedFile {
return .single(cachedFile)
}
return self.account.network.request(Api.functions.messages.getCustomEmojiDocuments(documentId: [fileId]))
|> map(Optional.init)
|> `catch` { _ -> Signal<[Api.Document]?, NoError> in
return .single(nil)
}
|> mapToSignal { result -> Signal<TelegramMediaFile?, NoError> in
guard let result = result else {
return .single(nil)
}
return self.account.postbox.transaction { transaction -> TelegramMediaFile? in
for document in result {
if let file = telegramMediaFileFromApiDocument(document) {
transaction.storeMediaIfNotPresent(media: file)
}
}
return transaction.getMedia(MediaId(namespace: Namespaces.Media.CloudFile, id: fileId)) as? TelegramMediaFile
}
}
}
}
}
}