mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-08-21 21:14:51 +00:00
Update API
This commit is contained in:
parent
88dd028371
commit
c60d85373b
@ -11,18 +11,39 @@ enum StickerVerificationStatus {
|
|||||||
|
|
||||||
public class ImportStickerPack {
|
public class ImportStickerPack {
|
||||||
public enum StickerPackType {
|
public enum StickerPackType {
|
||||||
case image
|
public enum ContentType {
|
||||||
case animation
|
case image
|
||||||
case video
|
case animation
|
||||||
|
case video
|
||||||
var importType: CreateStickerSetType {
|
|
||||||
switch self {
|
var importType: CreateStickerSetType.ContentType {
|
||||||
|
switch self {
|
||||||
case .image:
|
case .image:
|
||||||
return .image
|
return .image
|
||||||
case .animation:
|
case .animation:
|
||||||
return .animation
|
return .animation
|
||||||
case .video:
|
case .video:
|
||||||
return .video
|
return .video
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
case stickers(content: ContentType)
|
||||||
|
case emoji(content: ContentType, textColored: Bool)
|
||||||
|
|
||||||
|
var contentType: StickerPackType.ContentType {
|
||||||
|
switch self {
|
||||||
|
case let .stickers(content), let .emoji(content, _):
|
||||||
|
return content
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var importType: CreateStickerSetType {
|
||||||
|
switch self {
|
||||||
|
case let .stickers(content):
|
||||||
|
return .stickers(content: content.importType)
|
||||||
|
case let .emoji(content, textColored):
|
||||||
|
return .emoji(content: content.importType, textColored: textColored)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -51,12 +72,14 @@ public class ImportStickerPack {
|
|||||||
|
|
||||||
let content: Content
|
let content: Content
|
||||||
let emojis: [String]
|
let emojis: [String]
|
||||||
|
let keywords: String
|
||||||
let uuid: UUID
|
let uuid: UUID
|
||||||
var resource: MediaResource?
|
var resource: MediaResource?
|
||||||
|
|
||||||
init(content: Content, emojis: [String], uuid: UUID = UUID()) {
|
init(content: Content, emojis: [String], keywords: String, uuid: UUID = UUID()) {
|
||||||
self.content = content
|
self.content = content
|
||||||
self.emojis = emojis
|
self.emojis = emojis
|
||||||
|
self.keywords = keywords
|
||||||
self.uuid = uuid
|
self.uuid = uuid
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -88,13 +111,25 @@ public class ImportStickerPack {
|
|||||||
self.software = json["software"] as? String ?? ""
|
self.software = json["software"] as? String ?? ""
|
||||||
let isAnimated = json["isAnimated"] as? Bool ?? false
|
let isAnimated = json["isAnimated"] as? Bool ?? false
|
||||||
let isVideo = json["isVideo"] as? Bool ?? false
|
let isVideo = json["isVideo"] as? Bool ?? false
|
||||||
|
let isEmoji = json["isEmoji"] as? Bool ?? false
|
||||||
|
let isTextColored = json["isTextColored"] as? Bool ?? false
|
||||||
let type: StickerPackType
|
let type: StickerPackType
|
||||||
if isAnimated {
|
if isEmoji {
|
||||||
type = .animation
|
if isAnimated {
|
||||||
} else if isVideo {
|
type = .emoji(content: .animation, textColored: isTextColored)
|
||||||
type = .video
|
} else if isVideo {
|
||||||
|
type = .emoji(content: .video, textColored: isTextColored)
|
||||||
|
} else {
|
||||||
|
type = .emoji(content: .image, textColored: isTextColored)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
type = .image
|
if isAnimated {
|
||||||
|
type = .stickers(content: .animation)
|
||||||
|
} else if isVideo {
|
||||||
|
type = .stickers(content: .video)
|
||||||
|
} else {
|
||||||
|
type = .stickers(content: .image)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
self.type = type
|
self.type = type
|
||||||
|
|
||||||
@ -102,23 +137,23 @@ public class ImportStickerPack {
|
|||||||
if let dataString = sticker["data"] as? String, let mimeType = sticker["mimeType"] as? String, let data = Data(base64Encoded: dataString) {
|
if let dataString = sticker["data"] as? String, let mimeType = sticker["mimeType"] as? String, let data = Data(base64Encoded: dataString) {
|
||||||
var content: Sticker.Content?
|
var content: Sticker.Content?
|
||||||
switch mimeType.lowercased() {
|
switch mimeType.lowercased() {
|
||||||
case "image/png":
|
case "image/png":
|
||||||
if case .image = type {
|
if case .image = type.contentType {
|
||||||
content = .image(data)
|
content = .image(data)
|
||||||
}
|
}
|
||||||
case "application/x-tgsticker":
|
case "application/x-tgsticker":
|
||||||
if case .animation = type {
|
if case .animation = type.contentType {
|
||||||
content = .animation(data)
|
content = .animation(data)
|
||||||
}
|
}
|
||||||
case "video/webm", "image/webp", "image/gif":
|
case "video/webm", "image/webp", "image/gif":
|
||||||
if case .video = type {
|
if case .video = type.contentType {
|
||||||
content = .video(data, mimeType)
|
content = .video(data, mimeType)
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
if let content = content {
|
if let content = content {
|
||||||
return Sticker(content: content, emojis: sticker["emojis"] as? [String] ?? [])
|
return Sticker(content: content, emojis: sticker["emojis"] as? [String] ?? [], keywords: sticker["keywords"] as? String ?? "")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
@ -79,7 +79,7 @@ public final class ImportStickerPackController: ViewController, StandalonePresen
|
|||||||
Queue.mainQueue().after(0.1) {
|
Queue.mainQueue().after(0.1) {
|
||||||
self.controllerNode.updateStickerPack(self.stickerPack, verifiedStickers: Set(), declinedStickers: Set(), uploadedStickerResources: [:])
|
self.controllerNode.updateStickerPack(self.stickerPack, verifiedStickers: Set(), declinedStickers: Set(), uploadedStickerResources: [:])
|
||||||
|
|
||||||
if case .image = self.stickerPack.type {
|
if case .image = self.stickerPack.type.contentType {
|
||||||
} else {
|
} else {
|
||||||
let _ = (self.context.account.postbox.loadedPeerWithId(self.context.account.peerId)
|
let _ = (self.context.account.postbox.loadedPeerWithId(self.context.account.peerId)
|
||||||
|> deliverOnMainQueue).start(next: { [weak self] peer in
|
|> deliverOnMainQueue).start(next: { [weak self] peer in
|
||||||
|
@ -605,9 +605,9 @@ final class ImportStickerPackControllerNode: ViewControllerTracingNode, UIScroll
|
|||||||
if let localResource = item.stickerItem.resource {
|
if let localResource = item.stickerItem.resource {
|
||||||
self.context.account.postbox.mediaBox.copyResourceData(from: localResource.id, to: resource.id)
|
self.context.account.postbox.mediaBox.copyResourceData(from: localResource.id, to: resource.id)
|
||||||
}
|
}
|
||||||
stickers.append(ImportSticker(resource: resource, emojis: item.stickerItem.emojis, dimensions: dimensions, mimeType: item.stickerItem.mimeType))
|
stickers.append(ImportSticker(resource: resource, emojis: item.stickerItem.emojis, dimensions: dimensions, mimeType: item.stickerItem.mimeType, keywords: item.stickerItem.keywords))
|
||||||
} else if let resource = item.stickerItem.resource {
|
} else if let resource = item.stickerItem.resource {
|
||||||
stickers.append(ImportSticker(resource: resource, emojis: item.stickerItem.emojis, dimensions: dimensions, mimeType: item.stickerItem.mimeType))
|
stickers.append(ImportSticker(resource: resource, emojis: item.stickerItem.emojis, dimensions: dimensions, mimeType: item.stickerItem.mimeType, keywords: item.stickerItem.keywords))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var thumbnailSticker: ImportSticker?
|
var thumbnailSticker: ImportSticker?
|
||||||
@ -618,7 +618,7 @@ final class ImportStickerPackControllerNode: ViewControllerTracingNode, UIScroll
|
|||||||
}
|
}
|
||||||
let resource = LocalFileMediaResource(fileId: Int64.random(in: Int64.min ... Int64.max))
|
let resource = LocalFileMediaResource(fileId: Int64.random(in: Int64.min ... Int64.max))
|
||||||
self.context.account.postbox.mediaBox.storeResourceData(resource.id, data: thumbnail.data)
|
self.context.account.postbox.mediaBox.storeResourceData(resource.id, data: thumbnail.data)
|
||||||
thumbnailSticker = ImportSticker(resource: resource, emojis: [], dimensions: dimensions, mimeType: thumbnail.mimeType)
|
thumbnailSticker = ImportSticker(resource: resource, emojis: [], dimensions: dimensions, mimeType: thumbnail.mimeType, keywords: thumbnail.keywords)
|
||||||
}
|
}
|
||||||
|
|
||||||
let firstStickerItem = thumbnailSticker ?? stickers.first
|
let firstStickerItem = thumbnailSticker ?? stickers.first
|
||||||
@ -636,7 +636,7 @@ final class ImportStickerPackControllerNode: ViewControllerTracingNode, UIScroll
|
|||||||
if let (_, _, count) = strongSelf.progress {
|
if let (_, _, count) = strongSelf.progress {
|
||||||
strongSelf.progress = (1.0, count, count)
|
strongSelf.progress = (1.0, count, count)
|
||||||
var animated = false
|
var animated = false
|
||||||
if case .image = stickerPack.type {
|
if case .image = stickerPack.type.contentType {
|
||||||
animated = true
|
animated = true
|
||||||
}
|
}
|
||||||
strongSelf.radialStatus.transitionToState(.progress(color: strongSelf.presentationData.theme.list.itemAccentColor, lineWidth: 6.0, value: 1.0, cancelEnabled: false, animateRotation: false), animated: animated, synchronous: true, completion: {})
|
strongSelf.radialStatus.transitionToState(.progress(color: strongSelf.presentationData.theme.list.itemAccentColor, lineWidth: 6.0, value: 1.0, cancelEnabled: false, animateRotation: false), animated: animated, synchronous: true, completion: {})
|
||||||
@ -804,7 +804,7 @@ final class ImportStickerPackControllerNode: ViewControllerTracingNode, UIScroll
|
|||||||
}
|
}
|
||||||
self.pendingItems = updatedItems
|
self.pendingItems = updatedItems
|
||||||
|
|
||||||
if case .image = stickerPack.type {
|
if case .image = stickerPack.type.contentType {
|
||||||
} else {
|
} else {
|
||||||
self.stickerPackReady = stickerPack.stickers.count == (verifiedStickers.count + declinedStickers.count) && updatedItems.count > 0
|
self.stickerPackReady = stickerPack.stickers.count == (verifiedStickers.count + declinedStickers.count) && updatedItems.count > 0
|
||||||
}
|
}
|
||||||
|
@ -379,7 +379,7 @@ fileprivate let parsers: [Int32 : (BufferReader) -> Any?] = {
|
|||||||
dict[-1645763991] = { return Api.InputStickerSet.parse_inputStickerSetID($0) }
|
dict[-1645763991] = { return Api.InputStickerSet.parse_inputStickerSetID($0) }
|
||||||
dict[-930399486] = { return Api.InputStickerSet.parse_inputStickerSetPremiumGifts($0) }
|
dict[-930399486] = { return Api.InputStickerSet.parse_inputStickerSetPremiumGifts($0) }
|
||||||
dict[-2044933984] = { return Api.InputStickerSet.parse_inputStickerSetShortName($0) }
|
dict[-2044933984] = { return Api.InputStickerSet.parse_inputStickerSetShortName($0) }
|
||||||
dict[-6249322] = { return Api.InputStickerSetItem.parse_inputStickerSetItem($0) }
|
dict[853188252] = { return Api.InputStickerSetItem.parse_inputStickerSetItem($0) }
|
||||||
dict[70813275] = { return Api.InputStickeredMedia.parse_inputStickeredMediaDocument($0) }
|
dict[70813275] = { return Api.InputStickeredMedia.parse_inputStickeredMediaDocument($0) }
|
||||||
dict[1251549527] = { return Api.InputStickeredMedia.parse_inputStickeredMediaPhoto($0) }
|
dict[1251549527] = { return Api.InputStickeredMedia.parse_inputStickeredMediaPhoto($0) }
|
||||||
dict[1634697192] = { return Api.InputStorePaymentPurpose.parse_inputStorePaymentGiftPremium($0) }
|
dict[1634697192] = { return Api.InputStorePaymentPurpose.parse_inputStorePaymentGiftPremium($0) }
|
||||||
|
@ -392,26 +392,27 @@ public extension Api {
|
|||||||
}
|
}
|
||||||
public extension Api {
|
public extension Api {
|
||||||
enum InputStickerSetItem: TypeConstructorDescription {
|
enum InputStickerSetItem: TypeConstructorDescription {
|
||||||
case inputStickerSetItem(flags: Int32, document: Api.InputDocument, emoji: String, maskCoords: Api.MaskCoords?)
|
case inputStickerSetItem(flags: Int32, document: Api.InputDocument, emoji: String, maskCoords: Api.MaskCoords?, keywords: String?)
|
||||||
|
|
||||||
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
|
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
|
||||||
switch self {
|
switch self {
|
||||||
case .inputStickerSetItem(let flags, let document, let emoji, let maskCoords):
|
case .inputStickerSetItem(let flags, let document, let emoji, let maskCoords, let keywords):
|
||||||
if boxed {
|
if boxed {
|
||||||
buffer.appendInt32(-6249322)
|
buffer.appendInt32(853188252)
|
||||||
}
|
}
|
||||||
serializeInt32(flags, buffer: buffer, boxed: false)
|
serializeInt32(flags, buffer: buffer, boxed: false)
|
||||||
document.serialize(buffer, true)
|
document.serialize(buffer, true)
|
||||||
serializeString(emoji, buffer: buffer, boxed: false)
|
serializeString(emoji, buffer: buffer, boxed: false)
|
||||||
if Int(flags) & Int(1 << 0) != 0 {maskCoords!.serialize(buffer, true)}
|
if Int(flags) & Int(1 << 0) != 0 {maskCoords!.serialize(buffer, true)}
|
||||||
|
if Int(flags) & Int(1 << 1) != 0 {serializeString(keywords!, buffer: buffer, boxed: false)}
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public func descriptionFields() -> (String, [(String, Any)]) {
|
public func descriptionFields() -> (String, [(String, Any)]) {
|
||||||
switch self {
|
switch self {
|
||||||
case .inputStickerSetItem(let flags, let document, let emoji, let maskCoords):
|
case .inputStickerSetItem(let flags, let document, let emoji, let maskCoords, let keywords):
|
||||||
return ("inputStickerSetItem", [("flags", flags as Any), ("document", document as Any), ("emoji", emoji as Any), ("maskCoords", maskCoords as Any)])
|
return ("inputStickerSetItem", [("flags", flags as Any), ("document", document as Any), ("emoji", emoji as Any), ("maskCoords", maskCoords as Any), ("keywords", keywords as Any)])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -428,12 +429,15 @@ public extension Api {
|
|||||||
if Int(_1!) & Int(1 << 0) != 0 {if let signature = reader.readInt32() {
|
if Int(_1!) & Int(1 << 0) != 0 {if let signature = reader.readInt32() {
|
||||||
_4 = Api.parse(reader, signature: signature) as? Api.MaskCoords
|
_4 = Api.parse(reader, signature: signature) as? Api.MaskCoords
|
||||||
} }
|
} }
|
||||||
|
var _5: String?
|
||||||
|
if Int(_1!) & Int(1 << 1) != 0 {_5 = parseString(reader) }
|
||||||
let _c1 = _1 != nil
|
let _c1 = _1 != nil
|
||||||
let _c2 = _2 != nil
|
let _c2 = _2 != nil
|
||||||
let _c3 = _3 != nil
|
let _c3 = _3 != nil
|
||||||
let _c4 = (Int(_1!) & Int(1 << 0) == 0) || _4 != nil
|
let _c4 = (Int(_1!) & Int(1 << 0) == 0) || _4 != nil
|
||||||
if _c1 && _c2 && _c3 && _c4 {
|
let _c5 = (Int(_1!) & Int(1 << 1) == 0) || _5 != nil
|
||||||
return Api.InputStickerSetItem.inputStickerSetItem(flags: _1!, document: _2!, emoji: _3!, maskCoords: _4)
|
if _c1 && _c2 && _c3 && _c4 && _c5 {
|
||||||
|
return Api.InputStickerSetItem.inputStickerSetItem(flags: _1!, document: _2!, emoji: _3!, maskCoords: _4, keywords: _5)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return nil
|
return nil
|
||||||
|
@ -7919,6 +7919,25 @@ public extension Api.functions.stickers {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public extension Api.functions.stickers {
|
||||||
|
static func changeSticker(flags: Int32, sticker: Api.InputDocument, emoji: String?, maskCoords: Api.MaskCoords?, keywords: String?) -> (FunctionDescription, Buffer, DeserializeFunctionResponse<Api.messages.StickerSet>) {
|
||||||
|
let buffer = Buffer()
|
||||||
|
buffer.appendInt32(-179077444)
|
||||||
|
serializeInt32(flags, buffer: buffer, boxed: false)
|
||||||
|
sticker.serialize(buffer, true)
|
||||||
|
if Int(flags) & Int(1 << 0) != 0 {serializeString(emoji!, buffer: buffer, boxed: false)}
|
||||||
|
if Int(flags) & Int(1 << 1) != 0 {maskCoords!.serialize(buffer, true)}
|
||||||
|
if Int(flags) & Int(1 << 2) != 0 {serializeString(keywords!, buffer: buffer, boxed: false)}
|
||||||
|
return (FunctionDescription(name: "stickers.changeSticker", parameters: [("flags", String(describing: flags)), ("sticker", String(describing: sticker)), ("emoji", String(describing: emoji)), ("maskCoords", String(describing: maskCoords)), ("keywords", String(describing: keywords))]), buffer, DeserializeFunctionResponse { (buffer: Buffer) -> Api.messages.StickerSet? in
|
||||||
|
let reader = BufferReader(buffer)
|
||||||
|
var result: Api.messages.StickerSet?
|
||||||
|
if let signature = reader.readInt32() {
|
||||||
|
result = Api.parse(reader, signature: signature) as? Api.messages.StickerSet
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
public extension Api.functions.stickers {
|
public extension Api.functions.stickers {
|
||||||
static func changeStickerPosition(sticker: Api.InputDocument, position: Int32) -> (FunctionDescription, Buffer, DeserializeFunctionResponse<Api.messages.StickerSet>) {
|
static func changeStickerPosition(sticker: Api.InputDocument, position: Int32) -> (FunctionDescription, Buffer, DeserializeFunctionResponse<Api.messages.StickerSet>) {
|
||||||
let buffer = Buffer()
|
let buffer = Buffer()
|
||||||
@ -7991,12 +8010,30 @@ public extension Api.functions.stickers {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
public extension Api.functions.stickers {
|
public extension Api.functions.stickers {
|
||||||
static func setStickerSetThumb(stickerset: Api.InputStickerSet, thumb: Api.InputDocument) -> (FunctionDescription, Buffer, DeserializeFunctionResponse<Api.messages.StickerSet>) {
|
static func renameStickerSet(stickerset: Api.InputStickerSet, title: String) -> (FunctionDescription, Buffer, DeserializeFunctionResponse<Api.messages.StickerSet>) {
|
||||||
let buffer = Buffer()
|
let buffer = Buffer()
|
||||||
buffer.appendInt32(-1707717072)
|
buffer.appendInt32(306912256)
|
||||||
stickerset.serialize(buffer, true)
|
stickerset.serialize(buffer, true)
|
||||||
thumb.serialize(buffer, true)
|
serializeString(title, buffer: buffer, boxed: false)
|
||||||
return (FunctionDescription(name: "stickers.setStickerSetThumb", parameters: [("stickerset", String(describing: stickerset)), ("thumb", String(describing: thumb))]), buffer, DeserializeFunctionResponse { (buffer: Buffer) -> Api.messages.StickerSet? in
|
return (FunctionDescription(name: "stickers.renameStickerSet", parameters: [("stickerset", String(describing: stickerset)), ("title", String(describing: title))]), buffer, DeserializeFunctionResponse { (buffer: Buffer) -> Api.messages.StickerSet? in
|
||||||
|
let reader = BufferReader(buffer)
|
||||||
|
var result: Api.messages.StickerSet?
|
||||||
|
if let signature = reader.readInt32() {
|
||||||
|
result = Api.parse(reader, signature: signature) as? Api.messages.StickerSet
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public extension Api.functions.stickers {
|
||||||
|
static func setStickerSetThumb(flags: Int32, stickerset: Api.InputStickerSet, thumb: Api.InputDocument?, thumbDocumentId: Int64?) -> (FunctionDescription, Buffer, DeserializeFunctionResponse<Api.messages.StickerSet>) {
|
||||||
|
let buffer = Buffer()
|
||||||
|
buffer.appendInt32(-1486204014)
|
||||||
|
serializeInt32(flags, buffer: buffer, boxed: false)
|
||||||
|
stickerset.serialize(buffer, true)
|
||||||
|
if Int(flags) & Int(1 << 0) != 0 {thumb!.serialize(buffer, true)}
|
||||||
|
if Int(flags) & Int(1 << 1) != 0 {serializeInt64(thumbDocumentId!, buffer: buffer, boxed: false)}
|
||||||
|
return (FunctionDescription(name: "stickers.setStickerSetThumb", parameters: [("flags", String(describing: flags)), ("stickerset", String(describing: stickerset)), ("thumb", String(describing: thumb)), ("thumbDocumentId", String(describing: thumbDocumentId))]), buffer, DeserializeFunctionResponse { (buffer: Buffer) -> Api.messages.StickerSet? in
|
||||||
let reader = BufferReader(buffer)
|
let reader = BufferReader(buffer)
|
||||||
var result: Api.messages.StickerSet?
|
var result: Api.messages.StickerSet?
|
||||||
if let signature = reader.readInt32() {
|
if let signature = reader.readInt32() {
|
||||||
|
@ -210,7 +210,7 @@ public class BoxedMessage: NSObject {
|
|||||||
|
|
||||||
public class Serialization: NSObject, MTSerialization {
|
public class Serialization: NSObject, MTSerialization {
|
||||||
public func currentLayer() -> UInt {
|
public func currentLayer() -> UInt {
|
||||||
return 152
|
return 153
|
||||||
}
|
}
|
||||||
|
|
||||||
public func parseMessage(_ data: Data!) -> Any! {
|
public func parseMessage(_ data: Data!) -> Any! {
|
||||||
|
@ -81,12 +81,14 @@ public struct ImportSticker {
|
|||||||
let emojis: [String]
|
let emojis: [String]
|
||||||
public let dimensions: PixelDimensions
|
public let dimensions: PixelDimensions
|
||||||
public let mimeType: String
|
public let mimeType: String
|
||||||
|
public let keywords: String
|
||||||
|
|
||||||
public init(resource: MediaResource, emojis: [String], dimensions: PixelDimensions, mimeType: String) {
|
public init(resource: MediaResource, emojis: [String], dimensions: PixelDimensions, mimeType: String, keywords: String) {
|
||||||
self.resource = resource
|
self.resource = resource
|
||||||
self.emojis = emojis
|
self.emojis = emojis
|
||||||
self.dimensions = dimensions
|
self.dimensions = dimensions
|
||||||
self.mimeType = mimeType
|
self.mimeType = mimeType
|
||||||
|
self.keywords = keywords
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -96,9 +98,21 @@ public enum CreateStickerSetStatus {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public enum CreateStickerSetType {
|
public enum CreateStickerSetType {
|
||||||
case image
|
public enum ContentType {
|
||||||
case animation
|
case image
|
||||||
case video
|
case animation
|
||||||
|
case video
|
||||||
|
}
|
||||||
|
|
||||||
|
case stickers(content: ContentType)
|
||||||
|
case emoji(content: ContentType, textColored: Bool)
|
||||||
|
|
||||||
|
var contentType: ContentType {
|
||||||
|
switch self {
|
||||||
|
case let .stickers(content), let .emoji(content, _):
|
||||||
|
return content
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func _internal_createStickerSet(account: Account, title: String, shortName: String, stickers: [ImportSticker], thumbnail: ImportSticker?, type: CreateStickerSetType, software: String?) -> Signal<CreateStickerSetStatus, CreateStickerSetError> {
|
func _internal_createStickerSet(account: Account, title: String, shortName: String, stickers: [ImportSticker], thumbnail: ImportSticker?, type: CreateStickerSetType, software: String?) -> Signal<CreateStickerSetStatus, CreateStickerSetError> {
|
||||||
@ -133,7 +147,7 @@ func _internal_createStickerSet(account: Account, title: String, shortName: Stri
|
|||||||
}
|
}
|
||||||
if resources.count == stickers.count {
|
if resources.count == stickers.count {
|
||||||
var flags: Int32 = 0
|
var flags: Int32 = 0
|
||||||
switch type {
|
switch type.contentType {
|
||||||
case .animation:
|
case .animation:
|
||||||
flags |= (1 << 1)
|
flags |= (1 << 1)
|
||||||
case .video:
|
case .video:
|
||||||
@ -141,12 +155,24 @@ func _internal_createStickerSet(account: Account, title: String, shortName: Stri
|
|||||||
default:
|
default:
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
if case let .emoji(_, textColored) = type {
|
||||||
|
flags |= (1 << 5)
|
||||||
|
if textColored {
|
||||||
|
flags |= (1 << 6)
|
||||||
|
}
|
||||||
|
}
|
||||||
var inputStickers: [Api.InputStickerSetItem] = []
|
var inputStickers: [Api.InputStickerSetItem] = []
|
||||||
let stickerDocuments = thumbnail != nil ? resources.dropLast() : resources
|
let stickerDocuments = thumbnail != nil ? resources.dropLast() : resources
|
||||||
for i in 0 ..< stickerDocuments.count {
|
for i in 0 ..< stickerDocuments.count {
|
||||||
let sticker = stickers[i]
|
let sticker = stickers[i]
|
||||||
let resource = resources[i]
|
let resource = resources[i]
|
||||||
inputStickers.append(.inputStickerSetItem(flags: 0, document: .inputDocument(id: resource.fileId, accessHash: resource.accessHash, fileReference: Buffer(data: resource.fileReference ?? Data())), emoji: sticker.emojis.first ?? "", maskCoords: nil))
|
|
||||||
|
var flags: Int32 = 0
|
||||||
|
if sticker.keywords.count > 0 {
|
||||||
|
flags |= (1 << 1)
|
||||||
|
}
|
||||||
|
|
||||||
|
inputStickers.append(.inputStickerSetItem(flags: flags, document: .inputDocument(id: resource.fileId, accessHash: resource.accessHash, fileReference: Buffer(data: resource.fileReference ?? Data())), emoji: sticker.emojis.first ?? "", maskCoords: nil, keywords: sticker.keywords))
|
||||||
}
|
}
|
||||||
var thumbnailDocument: Api.InputDocument?
|
var thumbnailDocument: Api.InputDocument?
|
||||||
if thumbnail != nil, let resource = resources.last {
|
if thumbnail != nil, let resource = resources.last {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user