From 2739a839eddc0f93122879fbe7f41d2f9bf6ed27 Mon Sep 17 00:00:00 2001 From: Isaac <> Date: Tue, 25 Mar 2025 12:36:31 +0100 Subject: [PATCH] Fix flatbuffers serialization --- .../SyncCore_MediaReferenceFlatBuffers.swift | 24 +++++++++++++------ .../SyncCore/SyncCore_PeerReference.swift | 4 ++-- .../SyncCore_TelegramMediaImage.swift | 6 ++--- .../Sources/Utils/FlatBuffersUtils.swift | 4 ++-- 4 files changed, 24 insertions(+), 14 deletions(-) diff --git a/submodules/TelegramCore/Sources/SyncCore/SyncCore_MediaReferenceFlatBuffers.swift b/submodules/TelegramCore/Sources/SyncCore/SyncCore_MediaReferenceFlatBuffers.swift index 1fd6e987de..c083134b6e 100644 --- a/submodules/TelegramCore/Sources/SyncCore/SyncCore_MediaReferenceFlatBuffers.swift +++ b/submodules/TelegramCore/Sources/SyncCore/SyncCore_MediaReferenceFlatBuffers.swift @@ -75,7 +75,7 @@ public extension WebpageReference { } public extension PartialMediaReference { - init(flatBuffersObject: TelegramCore_PartialMediaReference) throws { + init?(flatBuffersObject: TelegramCore_PartialMediaReference) throws { switch flatBuffersObject.valueType { case .partialmediareferenceMessage: guard let value = flatBuffersObject.value(type: TelegramCore_PartialMediaReference_Message.self) else { @@ -112,6 +112,8 @@ public extension PartialMediaReference { } func encodeToFlatBuffers(builder: inout FlatBufferBuilder) -> Offset { + let valueType: TelegramCore_PartialMediaReference_Value + let valueOffset: Offset switch self { case let .message(message): let messageOffset = message.encodeToFlatBuffers(builder: &builder) @@ -119,28 +121,36 @@ public extension PartialMediaReference { if let messageOffset { TelegramCore_PartialMediaReference_Message.add(message: messageOffset, &builder) } - return TelegramCore_PartialMediaReference_Message.endPartialMediaReference_Message(&builder, start: start) + valueType = .partialmediareferenceMessage + valueOffset = TelegramCore_PartialMediaReference_Message.endPartialMediaReference_Message(&builder, start: start) case let .webPage(webPage): let webpageOffset = webPage.encodeToFlatBuffers(builder: &builder) let start = TelegramCore_PartialMediaReference_WebPage.startPartialMediaReference_WebPage(&builder) if let webpageOffset { TelegramCore_PartialMediaReference_WebPage.add(webPage: webpageOffset, &builder) } - return TelegramCore_PartialMediaReference_WebPage.endPartialMediaReference_WebPage(&builder, start: start) + valueType = .partialmediareferenceWebpage + valueOffset = TelegramCore_PartialMediaReference_WebPage.endPartialMediaReference_WebPage(&builder, start: start) case let .stickerPack(stickerPack): let stickerPackOffset = stickerPack.encodeToFlatBuffers(builder: &builder) let start = TelegramCore_PartialMediaReference_StickerPack.startPartialMediaReference_StickerPack(&builder) TelegramCore_PartialMediaReference_StickerPack.add(stickerPack: stickerPackOffset, &builder) - return TelegramCore_PartialMediaReference_StickerPack.endPartialMediaReference_StickerPack(&builder, start: start) + valueType = .partialmediareferenceStickerpack + valueOffset = TelegramCore_PartialMediaReference_StickerPack.endPartialMediaReference_StickerPack(&builder, start: start) case .savedGif: let start = TelegramCore_PartialMediaReference_SavedGif.startPartialMediaReference_SavedGif(&builder) - return TelegramCore_PartialMediaReference_SavedGif.endPartialMediaReference_SavedGif(&builder, start: start) + valueType = .partialmediareferenceSavedgif + valueOffset = TelegramCore_PartialMediaReference_SavedGif.endPartialMediaReference_SavedGif(&builder, start: start) case .savedSticker: let start = TelegramCore_PartialMediaReference_SavedSticker.startPartialMediaReference_SavedSticker(&builder) - return TelegramCore_PartialMediaReference_SavedSticker.endPartialMediaReference_SavedSticker(&builder, start: start) + valueType = .partialmediareferenceSavedsticker + valueOffset = TelegramCore_PartialMediaReference_SavedSticker.endPartialMediaReference_SavedSticker(&builder, start: start) case .recentSticker: let start = TelegramCore_PartialMediaReference_RecentSticker.startPartialMediaReference_RecentSticker(&builder) - return TelegramCore_PartialMediaReference_RecentSticker.endPartialMediaReference_RecentSticker(&builder, start: start) + valueType = .partialmediareferenceRecentsticker + valueOffset = TelegramCore_PartialMediaReference_RecentSticker.endPartialMediaReference_RecentSticker(&builder, start: start) } + + return TelegramCore_PartialMediaReference.createPartialMediaReference(&builder, valueType: valueType, valueOffset: valueOffset) } } diff --git a/submodules/TelegramCore/Sources/SyncCore/SyncCore_PeerReference.swift b/submodules/TelegramCore/Sources/SyncCore/SyncCore_PeerReference.swift index d2b949878f..75fb5aefe3 100644 --- a/submodules/TelegramCore/Sources/SyncCore/SyncCore_PeerReference.swift +++ b/submodules/TelegramCore/Sources/SyncCore/SyncCore_PeerReference.swift @@ -110,13 +110,13 @@ public enum PeerReference: PostboxCoding, Hashable, Equatable { let start = TelegramCore_PeerReference.startPeerReference(&builder) TelegramCore_PeerReference_Group.add(id: id, &builder) let offset = TelegramCore_PeerReference_Group.endPeerReference_Group(&builder, start: start) - return TelegramCore_PeerReference.createPeerReference(&builder, valueType: .peerreferenceUser, valueOffset: offset) + return TelegramCore_PeerReference.createPeerReference(&builder, valueType: .peerreferenceGroup, valueOffset: offset) case let .channel(id, accessHash): let start = TelegramCore_PeerReference.startPeerReference(&builder) TelegramCore_PeerReference_Channel.add(id: id, &builder) TelegramCore_PeerReference_Channel.add(accessHash: accessHash, &builder) let offset = TelegramCore_PeerReference_Channel.endPeerReference_Channel(&builder, start: start) - return TelegramCore_PeerReference.createPeerReference(&builder, valueType: .peerreferenceUser, valueOffset: offset) + return TelegramCore_PeerReference.createPeerReference(&builder, valueType: .peerreferenceChannel, valueOffset: offset) } } } diff --git a/submodules/TelegramCore/Sources/SyncCore/SyncCore_TelegramMediaImage.swift b/submodules/TelegramCore/Sources/SyncCore/SyncCore_TelegramMediaImage.swift index 8f96867169..780e7c5ae2 100644 --- a/submodules/TelegramCore/Sources/SyncCore/SyncCore_TelegramMediaImage.swift +++ b/submodules/TelegramCore/Sources/SyncCore/SyncCore_TelegramMediaImage.swift @@ -372,9 +372,9 @@ public final class TelegramMediaImage: Media, Equatable, Codable { return try TelegramMediaImage.VideoRepresentation(flatBuffersObject: flatBuffersObject.videoRepresentations(at: i)!) } self.immediateThumbnailData = flatBuffersObject.immediateThumbnailData.isEmpty ? nil : Data(flatBuffersObject.immediateThumbnailData) - self.emojiMarkup = try flatBuffersObject.emojiMarkup.map { try EmojiMarkup(flatBuffersObject: $0) } - self.reference = try flatBuffersObject.reference.map { try TelegramMediaImageReference(flatBuffersObject: $0) } - self.partialReference = try flatBuffersObject.partialReference.map { try PartialMediaReference(flatBuffersObject: $0) } + self.emojiMarkup = try flatBuffersObject.emojiMarkup.flatMap { try EmojiMarkup(flatBuffersObject: $0) } + self.reference = try flatBuffersObject.reference.flatMap { try TelegramMediaImageReference(flatBuffersObject: $0) } + self.partialReference = try flatBuffersObject.partialReference.flatMap { try PartialMediaReference(flatBuffersObject: $0) } self.flags = TelegramMediaImageFlags(rawValue: flatBuffersObject.flags) } diff --git a/submodules/TelegramCore/Sources/Utils/FlatBuffersUtils.swift b/submodules/TelegramCore/Sources/Utils/FlatBuffersUtils.swift index 1a94082ec8..0516d66334 100644 --- a/submodules/TelegramCore/Sources/Utils/FlatBuffersUtils.swift +++ b/submodules/TelegramCore/Sources/Utils/FlatBuffersUtils.swift @@ -16,9 +16,9 @@ public func FlatBuffers_getRoot( options: VerifierOptions = .init() ) -> T { if flatBuffers_checkedGet { - return getRoot(byteBuffer: &byteBuffer) - } else { return try! getCheckedRoot(byteBuffer: &byteBuffer, fileId: fileId, options: options) + } else { + return getRoot(byteBuffer: &byteBuffer) } }