mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-09-05 20:22:15 +00:00
fix message avatar loading
This commit is contained in:
parent
3eec2e834e
commit
eda6449c72
@ -848,7 +848,12 @@ func multipartFetch(postbox: Postbox, network: Network, mediaReferenceRevalidati
|
|||||||
} else {
|
} else {
|
||||||
return .revalidate
|
return .revalidate
|
||||||
}
|
}
|
||||||
case .messageAuthorAvatar:
|
case let .messageAuthorAvatar(message, _):
|
||||||
|
if let peer = message.author {
|
||||||
|
if let location = resource.apiInputLocation(peerReference: peer) {
|
||||||
|
return .location(location)
|
||||||
|
}
|
||||||
|
}
|
||||||
return .revalidate
|
return .revalidate
|
||||||
default:
|
default:
|
||||||
return .none
|
return .none
|
||||||
|
@ -7,16 +7,24 @@ public struct MessageReference: PostboxCoding, Hashable, Equatable {
|
|||||||
switch content {
|
switch content {
|
||||||
case .none:
|
case .none:
|
||||||
return nil
|
return nil
|
||||||
case let .message(peer, _, _, _, _):
|
case let .message(peer, _, _, _, _, _):
|
||||||
return peer
|
return peer
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public var author: PeerReference? {
|
||||||
|
switch content {
|
||||||
|
case .none:
|
||||||
|
return nil
|
||||||
|
case let .message(_, author, _, _, _, _):
|
||||||
|
return author
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public var id: MessageId? {
|
public var id: MessageId? {
|
||||||
switch content {
|
switch content {
|
||||||
case .none:
|
case .none:
|
||||||
return nil
|
return nil
|
||||||
case let .message(_, id, _, _, _):
|
case let .message(_, _, id, _, _, _):
|
||||||
return id
|
return id
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -25,7 +33,7 @@ public struct MessageReference: PostboxCoding, Hashable, Equatable {
|
|||||||
switch content {
|
switch content {
|
||||||
case .none:
|
case .none:
|
||||||
return nil
|
return nil
|
||||||
case let .message(_, _, timestamp, _, _):
|
case let .message(_, _, _, timestamp, _, _):
|
||||||
return timestamp
|
return timestamp
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -34,7 +42,7 @@ public struct MessageReference: PostboxCoding, Hashable, Equatable {
|
|||||||
switch content {
|
switch content {
|
||||||
case .none:
|
case .none:
|
||||||
return nil
|
return nil
|
||||||
case let .message(_, _, _, incoming, _):
|
case let .message(_, _, _, _, incoming, _):
|
||||||
return incoming
|
return incoming
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -43,22 +51,34 @@ public struct MessageReference: PostboxCoding, Hashable, Equatable {
|
|||||||
switch content {
|
switch content {
|
||||||
case .none:
|
case .none:
|
||||||
return nil
|
return nil
|
||||||
case let .message(_, _, _, _, secret):
|
case let .message(_, _, _, _, _, secret):
|
||||||
return secret
|
return secret
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public init(_ message: Message) {
|
public init(_ message: Message) {
|
||||||
if message.id.namespace != Namespaces.Message.Local, let peer = message.peers[message.id.peerId], let inputPeer = PeerReference(peer) {
|
if message.id.namespace != Namespaces.Message.Local, let peer = message.peers[message.id.peerId], let inputPeer = PeerReference(peer) {
|
||||||
self.content = .message(peer: inputPeer, id: message.id, timestamp: message.timestamp, incoming: message.flags.contains(.Incoming), secret: message.containsSecretMedia)
|
let author: PeerReference?
|
||||||
|
if let peer = message.author {
|
||||||
|
author = PeerReference(peer)
|
||||||
|
} else {
|
||||||
|
author = nil
|
||||||
|
}
|
||||||
|
self.content = .message(peer: inputPeer, author: author, id: message.id, timestamp: message.timestamp, incoming: message.flags.contains(.Incoming), secret: message.containsSecretMedia)
|
||||||
} else {
|
} else {
|
||||||
self.content = .none
|
self.content = .none
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public init(peer: Peer, id: MessageId, timestamp: Int32, incoming: Bool, secret: Bool) {
|
public init(peer: Peer, author: Peer?, id: MessageId, timestamp: Int32, incoming: Bool, secret: Bool) {
|
||||||
if let inputPeer = PeerReference(peer) {
|
if let inputPeer = PeerReference(peer) {
|
||||||
self.content = .message(peer: inputPeer, id: id, timestamp: timestamp, incoming: incoming, secret: secret)
|
let a: PeerReference?
|
||||||
|
if let peer = author {
|
||||||
|
a = PeerReference(peer)
|
||||||
|
} else {
|
||||||
|
a = nil
|
||||||
|
}
|
||||||
|
self.content = .message(peer: inputPeer, author: a, id: id, timestamp: timestamp, incoming: incoming, secret: secret)
|
||||||
} else {
|
} else {
|
||||||
self.content = .none
|
self.content = .none
|
||||||
}
|
}
|
||||||
@ -75,14 +95,14 @@ public struct MessageReference: PostboxCoding, Hashable, Equatable {
|
|||||||
|
|
||||||
public enum MessageReferenceContent: PostboxCoding, Hashable, Equatable {
|
public enum MessageReferenceContent: PostboxCoding, Hashable, Equatable {
|
||||||
case none
|
case none
|
||||||
case message(peer: PeerReference, id: MessageId, timestamp: Int32, incoming: Bool, secret: Bool)
|
case message(peer: PeerReference, author: PeerReference?, id: MessageId, timestamp: Int32, incoming: Bool, secret: Bool)
|
||||||
|
|
||||||
public init(decoder: PostboxDecoder) {
|
public init(decoder: PostboxDecoder) {
|
||||||
switch decoder.decodeInt32ForKey("_r", orElse: 0) {
|
switch decoder.decodeInt32ForKey("_r", orElse: 0) {
|
||||||
case 0:
|
case 0:
|
||||||
self = .none
|
self = .none
|
||||||
case 1:
|
case 1:
|
||||||
self = .message(peer: decoder.decodeObjectForKey("p", decoder: { PeerReference(decoder: $0) }) as! PeerReference, id: MessageId(peerId: PeerId(decoder.decodeInt64ForKey("i.p", orElse: 0)), namespace: decoder.decodeInt32ForKey("i.n", orElse: 0), id: decoder.decodeInt32ForKey("i.i", orElse: 0)), timestamp: 0, incoming: false, secret: false)
|
self = .message(peer: decoder.decodeObjectForKey("p", decoder: { PeerReference(decoder: $0) }) as! PeerReference, author: decoder.decodeObjectForKey("author") as? PeerReference, id: MessageId(peerId: PeerId(decoder.decodeInt64ForKey("i.p", orElse: 0)), namespace: decoder.decodeInt32ForKey("i.n", orElse: 0), id: decoder.decodeInt32ForKey("i.i", orElse: 0)), timestamp: 0, incoming: false, secret: false)
|
||||||
default:
|
default:
|
||||||
assertionFailure()
|
assertionFailure()
|
||||||
self = .none
|
self = .none
|
||||||
@ -93,9 +113,14 @@ public enum MessageReferenceContent: PostboxCoding, Hashable, Equatable {
|
|||||||
switch self {
|
switch self {
|
||||||
case .none:
|
case .none:
|
||||||
encoder.encodeInt32(0, forKey: "_r")
|
encoder.encodeInt32(0, forKey: "_r")
|
||||||
case let .message(peer, id, _, _, _):
|
case let .message(peer, author, id, _, _, _):
|
||||||
encoder.encodeInt32(1, forKey: "_r")
|
encoder.encodeInt32(1, forKey: "_r")
|
||||||
encoder.encodeObject(peer, forKey: "p")
|
encoder.encodeObject(peer, forKey: "p")
|
||||||
|
if let author = author {
|
||||||
|
encoder.encodeObject(author, forKey: "author")
|
||||||
|
} else {
|
||||||
|
encoder.encodeNil(forKey: "author")
|
||||||
|
}
|
||||||
encoder.encodeInt64(id.peerId.toInt64(), forKey: "i.p")
|
encoder.encodeInt64(id.peerId.toInt64(), forKey: "i.p")
|
||||||
encoder.encodeInt32(id.namespace, forKey: "i.n")
|
encoder.encodeInt32(id.namespace, forKey: "i.n")
|
||||||
encoder.encodeInt32(id.id, forKey: "i.i")
|
encoder.encodeInt32(id.id, forKey: "i.i")
|
||||||
|
@ -531,7 +531,7 @@ func _internal_downloadMessage(postbox: Postbox, network: Network, messageId: Me
|
|||||||
}
|
}
|
||||||
|
|
||||||
func fetchRemoteMessage(postbox: Postbox, source: FetchMessageHistoryHoleSource, message: MessageReference) -> Signal<Message?, NoError> {
|
func fetchRemoteMessage(postbox: Postbox, source: FetchMessageHistoryHoleSource, message: MessageReference) -> Signal<Message?, NoError> {
|
||||||
guard case let .message(peer, id, _, _, _) = message.content else {
|
guard case let .message(peer, _, id, _, _, _) = message.content else {
|
||||||
return .single(nil)
|
return .single(nil)
|
||||||
}
|
}
|
||||||
let signal: Signal<Api.messages.Messages, MTRpcError>
|
let signal: Signal<Api.messages.Messages, MTRpcError>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user