mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
Fix legacy fetch
This commit is contained in:
parent
3b0ddece86
commit
c26afb2ce0
@ -528,7 +528,11 @@ private final class MultipartFetchManager {
|
|||||||
|
|
||||||
if isStory {
|
if isStory {
|
||||||
self.defaultPartSize = 512 * 1024
|
self.defaultPartSize = 512 * 1024
|
||||||
self.parallelParts = 4
|
if let size, size > self.defaultPartSize {
|
||||||
|
self.parallelParts = 4
|
||||||
|
} else {
|
||||||
|
self.parallelParts = 1
|
||||||
|
}
|
||||||
} else if let size = size {
|
} else if let size = size {
|
||||||
if size <= 512 * 1024 {
|
if size <= 512 * 1024 {
|
||||||
self.defaultPartSize = 16 * 1024
|
self.defaultPartSize = 16 * 1024
|
||||||
|
@ -86,10 +86,15 @@ struct NetworkResponseInfo {
|
|||||||
var networkDuration: Double
|
var networkDuration: Double
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final class RequestManagerPriorityContext {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
private final class MultiplexedRequestManagerContext {
|
private final class MultiplexedRequestManagerContext {
|
||||||
private let queue: Queue
|
private let queue: Queue
|
||||||
private let takeWorker: (MultiplexedRequestTarget, MediaResourceFetchTag?, Bool) -> Download?
|
private let takeWorker: (MultiplexedRequestTarget, MediaResourceFetchTag?, Bool) -> Download?
|
||||||
|
|
||||||
|
private let priorityContext = RequestManagerPriorityContext()
|
||||||
private var queuedRequests: [RequestData] = []
|
private var queuedRequests: [RequestData] = []
|
||||||
private var nextId: Int32 = 0
|
private var nextId: Int32 = 0
|
||||||
|
|
||||||
@ -163,9 +168,9 @@ private final class MultiplexedRequestManagerContext {
|
|||||||
let maxRequestsPerWorker = 3
|
let maxRequestsPerWorker = 3
|
||||||
let maxWorkersPerTarget = 4
|
let maxWorkersPerTarget = 4
|
||||||
|
|
||||||
var requestIndex = 0
|
for request in self.queuedRequests.sorted(by: { lhs, rhs in
|
||||||
while requestIndex < self.queuedRequests.count {
|
return lhs.id < rhs.id
|
||||||
let request = self.queuedRequests[requestIndex]
|
}) {
|
||||||
let targetKey = MultiplexedRequestTargetKey(target: request.target, continueInBackground: request.continueInBackground)
|
let targetKey = MultiplexedRequestTargetKey(target: request.target, continueInBackground: request.continueInBackground)
|
||||||
|
|
||||||
if self.targetContexts[targetKey] == nil {
|
if self.targetContexts[targetKey] == nil {
|
||||||
@ -228,11 +233,11 @@ private final class MultiplexedRequestManagerContext {
|
|||||||
}
|
}
|
||||||
}))
|
}))
|
||||||
|
|
||||||
self.queuedRequests.remove(at: requestIndex)
|
if let requestIndex = self.queuedRequests.firstIndex(where: { $0 === request }) {
|
||||||
|
self.queuedRequests.remove(at: requestIndex)
|
||||||
|
}
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
requestIndex += 1
|
|
||||||
}
|
}
|
||||||
|
|
||||||
self.checkEmptyContexts()
|
self.checkEmptyContexts()
|
||||||
|
@ -719,7 +719,9 @@ private final class SparseItemGridBindingImpl: SparseItemGridBinding {
|
|||||||
var duration: Int32?
|
var duration: Int32?
|
||||||
var isMin: Bool = false
|
var isMin: Bool = false
|
||||||
if let file = selectedMedia as? TelegramMediaFile, !file.isAnimated {
|
if let file = selectedMedia as? TelegramMediaFile, !file.isAnimated {
|
||||||
duration = file.duration.flatMap(Int32.init)
|
if let durationValue = file.duration {
|
||||||
|
duration = Int32(durationValue)
|
||||||
|
}
|
||||||
isMin = layer.bounds.width < 80.0
|
isMin = layer.bounds.width < 80.0
|
||||||
}
|
}
|
||||||
layer.updateDuration(duration: duration, isMin: isMin, minFactor: min(1.0, layer.bounds.height / 74.0))
|
layer.updateDuration(duration: duration, isMin: isMin, minFactor: min(1.0, layer.bounds.height / 74.0))
|
||||||
|
@ -625,6 +625,7 @@ class ChatMessageStickerItemNode: ChatMessageItemView {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var replyMessage: Message?
|
var replyMessage: Message?
|
||||||
|
var replyStory: StoryId?
|
||||||
for attribute in item.message.attributes {
|
for attribute in item.message.attributes {
|
||||||
if let attribute = attribute as? InlineBotMessageAttribute {
|
if let attribute = attribute as? InlineBotMessageAttribute {
|
||||||
var inlineBotNameString: String?
|
var inlineBotNameString: String?
|
||||||
@ -651,12 +652,14 @@ class ChatMessageStickerItemNode: ChatMessageItemView {
|
|||||||
} else {
|
} else {
|
||||||
replyMessage = item.message.associatedMessages[replyAttribute.messageId]
|
replyMessage = item.message.associatedMessages[replyAttribute.messageId]
|
||||||
}
|
}
|
||||||
|
} else if let attribute = attribute as? ReplyStoryAttribute {
|
||||||
|
replyStory = attribute.storyId
|
||||||
} else if let attribute = attribute as? ReplyMarkupMessageAttribute, attribute.flags.contains(.inline), !attribute.rows.isEmpty {
|
} else if let attribute = attribute as? ReplyMarkupMessageAttribute, attribute.flags.contains(.inline), !attribute.rows.isEmpty {
|
||||||
replyMarkup = attribute
|
replyMarkup = attribute
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var hasReply = replyMessage != nil
|
var hasReply = replyMessage != nil || replyStory != nil
|
||||||
if case let .peer(peerId) = item.chatLocation, (peerId == replyMessage?.id.peerId || item.message.threadId == 1), let channel = item.message.peers[item.message.id.peerId] as? TelegramChannel, channel.flags.contains(.isForum), item.message.associatedThreadInfo != nil {
|
if case let .peer(peerId) = item.chatLocation, (peerId == replyMessage?.id.peerId || item.message.threadId == 1), let channel = item.message.peers[item.message.id.peerId] as? TelegramChannel, channel.flags.contains(.isForum), item.message.associatedThreadInfo != nil {
|
||||||
if let threadId = item.message.threadId, let replyMessage = replyMessage, Int64(replyMessage.id.id) == threadId {
|
if let threadId = item.message.threadId, let replyMessage = replyMessage, Int64(replyMessage.id.id) == threadId {
|
||||||
hasReply = false
|
hasReply = false
|
||||||
@ -676,14 +679,14 @@ class ChatMessageStickerItemNode: ChatMessageItemView {
|
|||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|
||||||
if let replyMessage = replyMessage, hasReply {
|
if hasReply, (replyMessage != nil || replyStory != nil) {
|
||||||
replyInfoApply = makeReplyInfoLayout(ChatMessageReplyInfoNode.Arguments(
|
replyInfoApply = makeReplyInfoLayout(ChatMessageReplyInfoNode.Arguments(
|
||||||
presentationData: item.presentationData,
|
presentationData: item.presentationData,
|
||||||
strings: item.presentationData.strings,
|
strings: item.presentationData.strings,
|
||||||
context: item.context,
|
context: item.context,
|
||||||
type: .standalone,
|
type: .standalone,
|
||||||
message: replyMessage,
|
message: replyMessage,
|
||||||
story: nil,
|
story: replyStory,
|
||||||
parentMessage: item.message,
|
parentMessage: item.message,
|
||||||
constrainedSize: CGSize(width: availableWidth, height: CGFloat.greatestFiniteMagnitude),
|
constrainedSize: CGSize(width: availableWidth, height: CGFloat.greatestFiniteMagnitude),
|
||||||
animationCache: item.controllerInteraction.presentationContext.animationCache,
|
animationCache: item.controllerInteraction.presentationContext.animationCache,
|
||||||
@ -1830,16 +1833,6 @@ class ChatMessageStickerItemNode: ChatMessageItemView {
|
|||||||
item.controllerInteraction.openMessageContextMenu(item.message, false, self, self.imageNode.frame, nil, nil)
|
item.controllerInteraction.openMessageContextMenu(item.message, false, self, self.imageNode.frame, nil, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
override func targetReactionView(value: MessageReaction.Reaction) -> UIView? {
|
|
||||||
if let result = self.reactionButtonsNode?.reactionTargetView(value: value) {
|
|
||||||
return result
|
|
||||||
}
|
|
||||||
if !self.dateAndStatusNode.isHidden {
|
|
||||||
return self.dateAndStatusNode.reactionView(value: value)
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
override func targetForStoryTransition(id: StoryId) -> UIView? {
|
override func targetForStoryTransition(id: StoryId) -> UIView? {
|
||||||
guard let item = self.item else {
|
guard let item = self.item else {
|
||||||
return nil
|
return nil
|
||||||
@ -1856,6 +1849,16 @@ class ChatMessageStickerItemNode: ChatMessageItemView {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override func targetReactionView(value: MessageReaction.Reaction) -> UIView? {
|
||||||
|
if let result = self.reactionButtonsNode?.reactionTargetView(value: value) {
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
if !self.dateAndStatusNode.isHidden {
|
||||||
|
return self.dateAndStatusNode.reactionView(value: value)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
override func contentFrame() -> CGRect {
|
override func contentFrame() -> CGRect {
|
||||||
return self.imageNode.frame
|
return self.imageNode.frame
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user