Update API

This commit is contained in:
Ali 2023-05-22 23:55:05 +04:00
parent 2c62b6dcf3
commit 637d4b125a
8 changed files with 87 additions and 37 deletions

View File

@ -788,6 +788,7 @@ fileprivate let parsers: [Int32 : (BufferReader) -> Any?] = {
dict[2008112412] = { return Api.StickerSetCovered.parse_stickerSetNoCovered($0) } dict[2008112412] = { return Api.StickerSetCovered.parse_stickerSetNoCovered($0) }
dict[-1882351956] = { return Api.StoryItem.parse_storyItem($0) } dict[-1882351956] = { return Api.StoryItem.parse_storyItem($0) }
dict[1374088783] = { return Api.StoryItem.parse_storyItemDeleted($0) } dict[1374088783] = { return Api.StoryItem.parse_storyItemDeleted($0) }
dict[-1579626609] = { return Api.StoryItem.parse_storyItemSkipped($0) }
dict[-1491424062] = { return Api.StoryView.parse_storyView($0) } dict[-1491424062] = { return Api.StoryView.parse_storyView($0) }
dict[1368082392] = { return Api.StoryViews.parse_storyViews($0) } dict[1368082392] = { return Api.StoryViews.parse_storyViews($0) }
dict[1964978502] = { return Api.TextWithEntities.parse_textWithEntities($0) } dict[1964978502] = { return Api.TextWithEntities.parse_textWithEntities($0) }
@ -937,7 +938,7 @@ fileprivate let parsers: [Int32 : (BufferReader) -> Any?] = {
dict[9203775] = { return Api.UserStatus.parse_userStatusOffline($0) } dict[9203775] = { return Api.UserStatus.parse_userStatusOffline($0) }
dict[-306628279] = { return Api.UserStatus.parse_userStatusOnline($0) } dict[-306628279] = { return Api.UserStatus.parse_userStatusOnline($0) }
dict[-496024847] = { return Api.UserStatus.parse_userStatusRecently($0) } dict[-496024847] = { return Api.UserStatus.parse_userStatusRecently($0) }
dict[-144780892] = { return Api.UserStories.parse_userStories($0) } dict[-2045664768] = { return Api.UserStories.parse_userStories($0) }
dict[-1274595769] = { return Api.Username.parse_username($0) } dict[-1274595769] = { return Api.Username.parse_username($0) }
dict[-567037804] = { return Api.VideoSize.parse_videoSize($0) } dict[-567037804] = { return Api.VideoSize.parse_videoSize($0) }
dict[-128171716] = { return Api.VideoSize.parse_videoSizeEmojiMarkup($0) } dict[-128171716] = { return Api.VideoSize.parse_videoSizeEmojiMarkup($0) }
@ -1154,7 +1155,8 @@ fileprivate let parsers: [Int32 : (BufferReader) -> Any?] = {
dict[172975040] = { return Api.storage.FileType.parse_filePng($0) } dict[172975040] = { return Api.storage.FileType.parse_filePng($0) }
dict[-1432995067] = { return Api.storage.FileType.parse_fileUnknown($0) } dict[-1432995067] = { return Api.storage.FileType.parse_fileUnknown($0) }
dict[276907596] = { return Api.storage.FileType.parse_fileWebp($0) } dict[276907596] = { return Api.storage.FileType.parse_fileWebp($0) }
dict[1214632796] = { return Api.stories.AllStories.parse_allStories($0) } dict[1528473228] = { return Api.stories.AllStories.parse_allStories($0) }
dict[1205903486] = { return Api.stories.AllStories.parse_allStoriesNotModified($0) }
dict[1340440049] = { return Api.stories.Stories.parse_stories($0) } dict[1340440049] = { return Api.stories.Stories.parse_stories($0) }
dict[-560009955] = { return Api.stories.StoryViews.parse_storyViews($0) } dict[-560009955] = { return Api.stories.StoryViews.parse_storyViews($0) }
dict[-79726676] = { return Api.stories.StoryViewsList.parse_storyViewsList($0) } dict[-79726676] = { return Api.stories.StoryViewsList.parse_storyViewsList($0) }

View File

@ -330,6 +330,7 @@ public extension Api {
indirect enum StoryItem: TypeConstructorDescription { indirect enum StoryItem: TypeConstructorDescription {
case storyItem(flags: Int32, id: Int32, date: Int32, caption: String?, entities: [Api.MessageEntity]?, media: Api.MessageMedia, privacy: [Api.PrivacyRule]?, views: Api.StoryViews?) case storyItem(flags: Int32, id: Int32, date: Int32, caption: String?, entities: [Api.MessageEntity]?, media: Api.MessageMedia, privacy: [Api.PrivacyRule]?, views: Api.StoryViews?)
case storyItemDeleted(id: Int32) case storyItemDeleted(id: Int32)
case storyItemSkipped(id: Int32, date: Int32)
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
switch self { switch self {
@ -360,6 +361,13 @@ public extension Api {
} }
serializeInt32(id, buffer: buffer, boxed: false) serializeInt32(id, buffer: buffer, boxed: false)
break break
case .storyItemSkipped(let id, let date):
if boxed {
buffer.appendInt32(-1579626609)
}
serializeInt32(id, buffer: buffer, boxed: false)
serializeInt32(date, buffer: buffer, boxed: false)
break
} }
} }
@ -369,6 +377,8 @@ public extension Api {
return ("storyItem", [("flags", flags as Any), ("id", id as Any), ("date", date as Any), ("caption", caption as Any), ("entities", entities as Any), ("media", media as Any), ("privacy", privacy as Any), ("views", views as Any)]) return ("storyItem", [("flags", flags as Any), ("id", id as Any), ("date", date as Any), ("caption", caption as Any), ("entities", entities as Any), ("media", media as Any), ("privacy", privacy as Any), ("views", views as Any)])
case .storyItemDeleted(let id): case .storyItemDeleted(let id):
return ("storyItemDeleted", [("id", id as Any)]) return ("storyItemDeleted", [("id", id as Any)])
case .storyItemSkipped(let id, let date):
return ("storyItemSkipped", [("id", id as Any), ("date", date as Any)])
} }
} }
@ -423,6 +433,20 @@ public extension Api {
return nil return nil
} }
} }
public static func parse_storyItemSkipped(_ reader: BufferReader) -> StoryItem? {
var _1: Int32?
_1 = reader.readInt32()
var _2: Int32?
_2 = reader.readInt32()
let _c1 = _1 != nil
let _c2 = _2 != nil
if _c1 && _c2 {
return Api.StoryItem.storyItemSkipped(id: _1!, date: _2!)
}
else {
return nil
}
}
} }
} }

View File

@ -888,13 +888,13 @@ public extension Api {
} }
public extension Api { public extension Api {
enum UserStories: TypeConstructorDescription { enum UserStories: TypeConstructorDescription {
case userStories(flags: Int32, userId: Int64, maxReadId: Int32?, stories: [Api.StoryItem], missingCount: Int32?) case userStories(flags: Int32, userId: Int64, maxReadId: Int32?, stories: [Api.StoryItem])
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
switch self { switch self {
case .userStories(let flags, let userId, let maxReadId, let stories, let missingCount): case .userStories(let flags, let userId, let maxReadId, let stories):
if boxed { if boxed {
buffer.appendInt32(-144780892) buffer.appendInt32(-2045664768)
} }
serializeInt32(flags, buffer: buffer, boxed: false) serializeInt32(flags, buffer: buffer, boxed: false)
serializeInt64(userId, buffer: buffer, boxed: false) serializeInt64(userId, buffer: buffer, boxed: false)
@ -904,15 +904,14 @@ public extension Api {
for item in stories { for item in stories {
item.serialize(buffer, true) item.serialize(buffer, true)
} }
if Int(flags) & Int(1 << 1) != 0 {serializeInt32(missingCount!, buffer: buffer, boxed: false)}
break break
} }
} }
public func descriptionFields() -> (String, [(String, Any)]) { public func descriptionFields() -> (String, [(String, Any)]) {
switch self { switch self {
case .userStories(let flags, let userId, let maxReadId, let stories, let missingCount): case .userStories(let flags, let userId, let maxReadId, let stories):
return ("userStories", [("flags", flags as Any), ("userId", userId as Any), ("maxReadId", maxReadId as Any), ("stories", stories as Any), ("missingCount", missingCount as Any)]) return ("userStories", [("flags", flags as Any), ("userId", userId as Any), ("maxReadId", maxReadId as Any), ("stories", stories as Any)])
} }
} }
@ -927,15 +926,12 @@ public extension Api {
if let _ = reader.readInt32() { if let _ = reader.readInt32() {
_4 = Api.parseVector(reader, elementSignature: 0, elementType: Api.StoryItem.self) _4 = Api.parseVector(reader, elementSignature: 0, elementType: Api.StoryItem.self)
} }
var _5: Int32?
if Int(_1!) & Int(1 << 1) != 0 {_5 = reader.readInt32() }
let _c1 = _1 != nil let _c1 = _1 != nil
let _c2 = _2 != nil let _c2 = _2 != nil
let _c3 = (Int(_1!) & Int(1 << 0) == 0) || _3 != nil let _c3 = (Int(_1!) & Int(1 << 0) == 0) || _3 != nil
let _c4 = _4 != nil let _c4 = _4 != nil
let _c5 = (Int(_1!) & Int(1 << 1) == 0) || _5 != nil if _c1 && _c2 && _c3 && _c4 {
if _c1 && _c2 && _c3 && _c4 && _c5 { return Api.UserStories.userStories(flags: _1!, userId: _2!, maxReadId: _3, stories: _4!)
return Api.UserStories.userStories(flags: _1!, userId: _2!, maxReadId: _3, stories: _4!, missingCount: _5)
} }
else { else {
return nil return nil

View File

@ -360,56 +360,76 @@ public extension Api.storage {
} }
public extension Api.stories { public extension Api.stories {
enum AllStories: TypeConstructorDescription { enum AllStories: TypeConstructorDescription {
case allStories(flags: Int32, userStories: [Api.UserStories], nextOffset: String?, users: [Api.User]) case allStories(flags: Int32, state: String, userStories: [Api.UserStories], users: [Api.User])
case allStoriesNotModified(state: String)
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
switch self { switch self {
case .allStories(let flags, let userStories, let nextOffset, let users): case .allStories(let flags, let state, let userStories, let users):
if boxed { if boxed {
buffer.appendInt32(1214632796) buffer.appendInt32(1528473228)
} }
serializeInt32(flags, buffer: buffer, boxed: false) serializeInt32(flags, buffer: buffer, boxed: false)
serializeString(state, buffer: buffer, boxed: false)
buffer.appendInt32(481674261) buffer.appendInt32(481674261)
buffer.appendInt32(Int32(userStories.count)) buffer.appendInt32(Int32(userStories.count))
for item in userStories { for item in userStories {
item.serialize(buffer, true) item.serialize(buffer, true)
} }
if Int(flags) & Int(1 << 0) != 0 {serializeString(nextOffset!, buffer: buffer, boxed: false)}
buffer.appendInt32(481674261) buffer.appendInt32(481674261)
buffer.appendInt32(Int32(users.count)) buffer.appendInt32(Int32(users.count))
for item in users { for item in users {
item.serialize(buffer, true) item.serialize(buffer, true)
} }
break break
case .allStoriesNotModified(let state):
if boxed {
buffer.appendInt32(1205903486)
}
serializeString(state, buffer: buffer, boxed: false)
break
} }
} }
public func descriptionFields() -> (String, [(String, Any)]) { public func descriptionFields() -> (String, [(String, Any)]) {
switch self { switch self {
case .allStories(let flags, let userStories, let nextOffset, let users): case .allStories(let flags, let state, let userStories, let users):
return ("allStories", [("flags", flags as Any), ("userStories", userStories as Any), ("nextOffset", nextOffset as Any), ("users", users as Any)]) return ("allStories", [("flags", flags as Any), ("state", state as Any), ("userStories", userStories as Any), ("users", users as Any)])
case .allStoriesNotModified(let state):
return ("allStoriesNotModified", [("state", state as Any)])
} }
} }
public static func parse_allStories(_ reader: BufferReader) -> AllStories? { public static func parse_allStories(_ reader: BufferReader) -> AllStories? {
var _1: Int32? var _1: Int32?
_1 = reader.readInt32() _1 = reader.readInt32()
var _2: [Api.UserStories]? var _2: String?
_2 = parseString(reader)
var _3: [Api.UserStories]?
if let _ = reader.readInt32() { if let _ = reader.readInt32() {
_2 = Api.parseVector(reader, elementSignature: 0, elementType: Api.UserStories.self) _3 = Api.parseVector(reader, elementSignature: 0, elementType: Api.UserStories.self)
} }
var _3: String?
if Int(_1!) & Int(1 << 0) != 0 {_3 = parseString(reader) }
var _4: [Api.User]? var _4: [Api.User]?
if let _ = reader.readInt32() { if let _ = reader.readInt32() {
_4 = Api.parseVector(reader, elementSignature: 0, elementType: Api.User.self) _4 = Api.parseVector(reader, elementSignature: 0, elementType: Api.User.self)
} }
let _c1 = _1 != nil let _c1 = _1 != nil
let _c2 = _2 != nil let _c2 = _2 != nil
let _c3 = (Int(_1!) & Int(1 << 0) == 0) || _3 != nil let _c3 = _3 != nil
let _c4 = _4 != nil let _c4 = _4 != nil
if _c1 && _c2 && _c3 && _c4 { if _c1 && _c2 && _c3 && _c4 {
return Api.stories.AllStories.allStories(flags: _1!, userStories: _2!, nextOffset: _3, users: _4!) return Api.stories.AllStories.allStories(flags: _1!, state: _2!, userStories: _3!, users: _4!)
}
else {
return nil
}
}
public static func parse_allStoriesNotModified(_ reader: BufferReader) -> AllStories? {
var _1: String?
_1 = parseString(reader)
let _c1 = _1 != nil
if _c1 {
return Api.stories.AllStories.allStoriesNotModified(state: _1!)
} }
else { else {
return nil return nil

View File

@ -8477,11 +8477,12 @@ public extension Api.functions.stories {
} }
} }
public extension Api.functions.stories { public extension Api.functions.stories {
static func getAllStories(offset: String) -> (FunctionDescription, Buffer, DeserializeFunctionResponse<Api.stories.AllStories>) { static func getAllStories(flags: Int32, state: String?) -> (FunctionDescription, Buffer, DeserializeFunctionResponse<Api.stories.AllStories>) {
let buffer = Buffer() let buffer = Buffer()
buffer.appendInt32(-1976539530) buffer.appendInt32(-290400731)
serializeString(offset, buffer: buffer, boxed: false) serializeInt32(flags, buffer: buffer, boxed: false)
return (FunctionDescription(name: "stories.getAllStories", parameters: [("offset", String(describing: offset))]), buffer, DeserializeFunctionResponse { (buffer: Buffer) -> Api.stories.AllStories? in if Int(flags) & Int(1 << 0) != 0 {serializeString(state!, buffer: buffer, boxed: false)}
return (FunctionDescription(name: "stories.getAllStories", parameters: [("flags", String(describing: flags)), ("state", String(describing: state))]), buffer, DeserializeFunctionResponse { (buffer: Buffer) -> Api.stories.AllStories? in
let reader = BufferReader(buffer) let reader = BufferReader(buffer)
var result: Api.stories.AllStories? var result: Api.stories.AllStories?
if let signature = reader.readInt32() { if let signature = reader.readInt32() {

View File

@ -4330,9 +4330,8 @@ func replayFinalState(
} }
case let .UpdateStories(updateStories): case let .UpdateStories(updateStories):
switch updateStories { switch updateStories {
case let .userStories(_, userId, maxReadId, stories, missingCount): case let .userStories(_, userId, maxReadId, stories):
let _ = maxReadId let _ = maxReadId
let _ = missingCount
let peerId = PeerId(namespace: Namespaces.Peer.CloudUser, id: PeerId.Id._internalFromInt64Value(userId)) let peerId = PeerId(namespace: Namespaces.Peer.CloudUser, id: PeerId.Id._internalFromInt64Value(userId))
for storyItem in stories { for storyItem in stories {
if let parsedItem = _internal_parseApiStoryItem(transaction: transaction, peerId: peerId, apiStory: storyItem) { if let parsedItem = _internal_parseApiStoryItem(transaction: transaction, peerId: peerId, apiStory: storyItem) {

View File

@ -183,7 +183,7 @@ func _internal_uploadStory(account: Account, media: EngineStoryInputMedia, text:
for update in updates.allUpdates { for update in updates.allUpdates {
if case let .updateStories(stories) = update { if case let .updateStories(stories) = update {
switch stories { switch stories {
case let .userStories(_, userId, _, apiStories, _): case let .userStories(_, userId, _, apiStories):
if PeerId(namespace: Namespaces.Peer.CloudUser, id: PeerId.Id._internalFromInt64Value(userId)) == account.peerId, apiStories.count == 1 { if PeerId(namespace: Namespaces.Peer.CloudUser, id: PeerId.Id._internalFromInt64Value(userId)) == account.peerId, apiStories.count == 1 {
switch apiStories[0] { switch apiStories[0] {
case let .storyItem(_, _, _, _, _, media, _, _): case let .storyItem(_, _, _, _, _, media, _, _):
@ -251,6 +251,8 @@ extension Api.StoryItem {
return id return id
case let .storyItemDeleted(id): case let .storyItemDeleted(id):
return id return id
case let .storyItemSkipped(id, _):
return id
} }
} }
} }
@ -305,6 +307,8 @@ func _internal_parseApiStoryItem(transaction: Transaction, peerId: PeerId, apiSt
} else { } else {
return nil return nil
} }
case .storyItemSkipped:
return nil
case .storyItemDeleted: case .storyItemDeleted:
return nil return nil
} }

View File

@ -454,6 +454,7 @@ public final class StoryListContext {
guard let loadMoreToken = effectiveLoadMoreToken else { guard let loadMoreToken = effectiveLoadMoreToken else {
return return
} }
let _ = loadMoreToken
self.isLoadingMore = true self.isLoadingMore = true
let account = self.account let account = self.account
@ -464,7 +465,7 @@ public final class StoryListContext {
switch scope { switch scope {
case .all: case .all:
self.loadMoreDisposable.set((account.network.request(Api.functions.stories.getAllStories(offset: loadMoreToken)) self.loadMoreDisposable.set((account.network.request(Api.functions.stories.getAllStories(flags: 0, state: nil))
|> map(Optional.init) |> map(Optional.init)
|> `catch` { _ -> Signal<Api.stories.AllStories?, NoError> in |> `catch` { _ -> Signal<Api.stories.AllStories?, NoError> in
return .single(nil) return .single(nil)
@ -475,7 +476,8 @@ public final class StoryListContext {
} }
return account.postbox.transaction { transaction -> ([PeerItemSet], LoadMoreToken?) in return account.postbox.transaction { transaction -> ([PeerItemSet], LoadMoreToken?) in
switch result { switch result {
case let .allStories(_, userStorySets, nextOffset, users): case let .allStories(_, state, userStorySets, users):
let _ = state
var parsedItemSets: [PeerItemSet] = [] var parsedItemSets: [PeerItemSet] = []
var peers: [Peer] = [] var peers: [Peer] = []
@ -498,10 +500,10 @@ public final class StoryListContext {
var apiTotalCount: Int32? var apiTotalCount: Int32?
var apiMaxReadId: Int32 = 0 var apiMaxReadId: Int32 = 0
switch userStories { switch userStories {
case let .userStories(_, userId, maxReadId, stories, missingCount): case let .userStories(_, userId, maxReadId, stories):
apiUserId = userId apiUserId = userId
apiStories = stories apiStories = stories
apiTotalCount = (missingCount ?? 0) + Int32(stories.count) apiTotalCount = Int32(stories.count)
apiMaxReadId = maxReadId ?? 0 apiMaxReadId = maxReadId ?? 0
} }
@ -529,7 +531,9 @@ public final class StoryListContext {
} }
} }
return (parsedItemSets, nextOffset.flatMap { LoadMoreToken(value: $0) }) return (parsedItemSets, nil)
case .allStoriesNotModified:
return ([], nil)
} }
} }
} }