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 {
|
||||
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 {
|
||||
if size <= 512 * 1024 {
|
||||
self.defaultPartSize = 16 * 1024
|
||||
|
@ -86,10 +86,15 @@ struct NetworkResponseInfo {
|
||||
var networkDuration: Double
|
||||
}
|
||||
|
||||
final class RequestManagerPriorityContext {
|
||||
|
||||
}
|
||||
|
||||
private final class MultiplexedRequestManagerContext {
|
||||
private let queue: Queue
|
||||
private let takeWorker: (MultiplexedRequestTarget, MediaResourceFetchTag?, Bool) -> Download?
|
||||
|
||||
private let priorityContext = RequestManagerPriorityContext()
|
||||
private var queuedRequests: [RequestData] = []
|
||||
private var nextId: Int32 = 0
|
||||
|
||||
@ -163,9 +168,9 @@ private final class MultiplexedRequestManagerContext {
|
||||
let maxRequestsPerWorker = 3
|
||||
let maxWorkersPerTarget = 4
|
||||
|
||||
var requestIndex = 0
|
||||
while requestIndex < self.queuedRequests.count {
|
||||
let request = self.queuedRequests[requestIndex]
|
||||
for request in self.queuedRequests.sorted(by: { lhs, rhs in
|
||||
return lhs.id < rhs.id
|
||||
}) {
|
||||
let targetKey = MultiplexedRequestTargetKey(target: request.target, continueInBackground: request.continueInBackground)
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
requestIndex += 1
|
||||
}
|
||||
|
||||
self.checkEmptyContexts()
|
||||
|
@ -719,7 +719,9 @@ private final class SparseItemGridBindingImpl: SparseItemGridBinding {
|
||||
var duration: Int32?
|
||||
var isMin: Bool = false
|
||||
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
|
||||
}
|
||||
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 replyStory: StoryId?
|
||||
for attribute in item.message.attributes {
|
||||
if let attribute = attribute as? InlineBotMessageAttribute {
|
||||
var inlineBotNameString: String?
|
||||
@ -651,12 +652,14 @@ class ChatMessageStickerItemNode: ChatMessageItemView {
|
||||
} else {
|
||||
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 {
|
||||
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 let threadId = item.message.threadId, let replyMessage = replyMessage, Int64(replyMessage.id.id) == threadId {
|
||||
hasReply = false
|
||||
@ -676,14 +679,14 @@ class ChatMessageStickerItemNode: ChatMessageItemView {
|
||||
))
|
||||
}
|
||||
|
||||
if let replyMessage = replyMessage, hasReply {
|
||||
if hasReply, (replyMessage != nil || replyStory != nil) {
|
||||
replyInfoApply = makeReplyInfoLayout(ChatMessageReplyInfoNode.Arguments(
|
||||
presentationData: item.presentationData,
|
||||
strings: item.presentationData.strings,
|
||||
context: item.context,
|
||||
type: .standalone,
|
||||
message: replyMessage,
|
||||
story: nil,
|
||||
story: replyStory,
|
||||
parentMessage: item.message,
|
||||
constrainedSize: CGSize(width: availableWidth, height: CGFloat.greatestFiniteMagnitude),
|
||||
animationCache: item.controllerInteraction.presentationContext.animationCache,
|
||||
@ -1830,16 +1833,6 @@ class ChatMessageStickerItemNode: ChatMessageItemView {
|
||||
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? {
|
||||
guard let item = self.item else {
|
||||
return nil
|
||||
@ -1856,6 +1849,16 @@ class ChatMessageStickerItemNode: ChatMessageItemView {
|
||||
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 {
|
||||
return self.imageNode.frame
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user