Update API

This commit is contained in:
Ali
2023-05-15 18:43:14 +04:00
parent a4175c44ca
commit 8477cf454c
34 changed files with 797 additions and 520 deletions

View File

@@ -251,6 +251,7 @@ public enum AnyMediaReference: Equatable {
case avatarList(peer: PeerReference, media: Media)
case attachBot(peer: PeerReference, media: Media)
case customEmoji(media: Media)
case story(peer: PeerReference, id: Int32, media: Media)
public static func ==(lhs: AnyMediaReference, rhs: AnyMediaReference) -> Bool {
switch lhs {
@@ -302,6 +303,12 @@ public enum AnyMediaReference: Equatable {
} else {
return false
}
case let .story(lhsPeer, lhsId, lhsMedia):
if case let .story(rhsPeer, rhsId, rhsMedia) = rhs, lhsPeer == rhsPeer, lhsId == rhsId, lhsMedia.isEqual(to: rhsMedia) {
return true
} else {
return false
}
}
}
@@ -323,6 +330,8 @@ public enum AnyMediaReference: Equatable {
return nil
case .customEmoji:
return nil
case .story:
return nil
}
}
@@ -360,6 +369,10 @@ public enum AnyMediaReference: Equatable {
if let media = media as? T {
return .customEmoji(media: media)
}
case let .story(peer, id, media):
if let media = media as? T {
return .story(peer: peer, id: id, media: media)
}
}
return nil
}
@@ -382,6 +395,8 @@ public enum AnyMediaReference: Equatable {
return media
case let .customEmoji(media):
return media
case let .story(_, _, media):
return media
}
}
@@ -462,6 +477,7 @@ public enum MediaReference<T: Media> {
case avatarList
case attachBot
case customEmoji
case story
}
case standalone(media: T)
@@ -472,6 +488,7 @@ public enum MediaReference<T: Media> {
case avatarList(peer: PeerReference, media: T)
case attachBot(peer: PeerReference, media: T)
case customEmoji(media: T)
case story(peer: PeerReference, id: Int32, media: T)
public init?(decoder: PostboxDecoder) {
guard let caseIdValue = decoder.decodeOptionalInt32ForKey("_r"), let caseId = CodingCase(rawValue: caseIdValue) else {
@@ -523,6 +540,13 @@ public enum MediaReference<T: Media> {
return nil
}
self = .customEmoji(media: media)
case .story:
let peer = decoder.decodeObjectForKey("pr", decoder: { PeerReference(decoder: $0) }) as! PeerReference
guard let media = decoder.decodeObjectForKey("m") as? T else {
return nil
}
let id = decoder.decodeInt32ForKey("sid", orElse: 0)
self = .story(peer: peer, id: id, media: media)
}
}
@@ -557,6 +581,11 @@ public enum MediaReference<T: Media> {
case let .customEmoji(media):
encoder.encodeInt32(CodingCase.customEmoji.rawValue, forKey: "_r")
encoder.encodeObject(media, forKey: "m")
case let .story(peer, id, media):
encoder.encodeInt32(CodingCase.story.rawValue, forKey: "_r")
encoder.encodeObject(peer, forKey: "pr")
encoder.encodeInt32(id, forKey: "sid")
encoder.encodeObject(media, forKey: "m")
}
}
@@ -578,6 +607,8 @@ public enum MediaReference<T: Media> {
return .attachBot(peer: peer, media: media)
case let .customEmoji(media):
return .customEmoji(media: media)
case let .story(peer, id, media):
return .story(peer: peer, id: id, media: media)
}
}
@@ -603,6 +634,8 @@ public enum MediaReference<T: Media> {
return media
case let .customEmoji(media):
return media
case let .story(_, _, media):
return media
}
}

View File

@@ -255,6 +255,17 @@ public struct MessageTextEntity: PostboxCoding, Codable, Equatable {
}
}
extension MessageTextEntity {
var associatedPeerIds: [PeerId] {
switch self.type {
case let .TextMention(peerId):
return [peerId]
default:
return []
}
}
}
public class TextEntitiesMessageAttribute: MessageAttribute, Equatable {
public let entities: [MessageTextEntity]