mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-09-04 20:00:53 +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 {
|
||||
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
|
||||
default:
|
||||
return .none
|
||||
|
@ -7,16 +7,24 @@ public struct MessageReference: PostboxCoding, Hashable, Equatable {
|
||||
switch content {
|
||||
case .none:
|
||||
return nil
|
||||
case let .message(peer, _, _, _, _):
|
||||
case let .message(peer, _, _, _, _, _):
|
||||
return peer
|
||||
}
|
||||
}
|
||||
public var author: PeerReference? {
|
||||
switch content {
|
||||
case .none:
|
||||
return nil
|
||||
case let .message(_, author, _, _, _, _):
|
||||
return author
|
||||
}
|
||||
}
|
||||
|
||||
public var id: MessageId? {
|
||||
switch content {
|
||||
case .none:
|
||||
return nil
|
||||
case let .message(_, id, _, _, _):
|
||||
case let .message(_, _, id, _, _, _):
|
||||
return id
|
||||
}
|
||||
}
|
||||
@ -25,7 +33,7 @@ public struct MessageReference: PostboxCoding, Hashable, Equatable {
|
||||
switch content {
|
||||
case .none:
|
||||
return nil
|
||||
case let .message(_, _, timestamp, _, _):
|
||||
case let .message(_, _, _, timestamp, _, _):
|
||||
return timestamp
|
||||
}
|
||||
}
|
||||
@ -34,7 +42,7 @@ public struct MessageReference: PostboxCoding, Hashable, Equatable {
|
||||
switch content {
|
||||
case .none:
|
||||
return nil
|
||||
case let .message(_, _, _, incoming, _):
|
||||
case let .message(_, _, _, _, incoming, _):
|
||||
return incoming
|
||||
}
|
||||
}
|
||||
@ -43,22 +51,34 @@ public struct MessageReference: PostboxCoding, Hashable, Equatable {
|
||||
switch content {
|
||||
case .none:
|
||||
return nil
|
||||
case let .message(_, _, _, _, secret):
|
||||
case let .message(_, _, _, _, _, secret):
|
||||
return secret
|
||||
}
|
||||
}
|
||||
|
||||
public init(_ message: Message) {
|
||||
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 {
|
||||
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) {
|
||||
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 {
|
||||
self.content = .none
|
||||
}
|
||||
@ -75,14 +95,14 @@ public struct MessageReference: PostboxCoding, Hashable, Equatable {
|
||||
|
||||
public enum MessageReferenceContent: PostboxCoding, Hashable, Equatable {
|
||||
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) {
|
||||
switch decoder.decodeInt32ForKey("_r", orElse: 0) {
|
||||
case 0:
|
||||
self = .none
|
||||
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:
|
||||
assertionFailure()
|
||||
self = .none
|
||||
@ -93,9 +113,14 @@ public enum MessageReferenceContent: PostboxCoding, Hashable, Equatable {
|
||||
switch self {
|
||||
case .none:
|
||||
encoder.encodeInt32(0, forKey: "_r")
|
||||
case let .message(peer, id, _, _, _):
|
||||
case let .message(peer, author, id, _, _, _):
|
||||
encoder.encodeInt32(1, forKey: "_r")
|
||||
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.encodeInt32(id.namespace, forKey: "i.n")
|
||||
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> {
|
||||
guard case let .message(peer, id, _, _, _) = message.content else {
|
||||
guard case let .message(peer, _, id, _, _, _) = message.content else {
|
||||
return .single(nil)
|
||||
}
|
||||
let signal: Signal<Api.messages.Messages, MTRpcError>
|
||||
|
Loading…
x
Reference in New Issue
Block a user