mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-11-07 01:10:09 +00:00
Various fixes
This commit is contained in:
parent
4e804bf9d9
commit
e27ff72830
@ -121,10 +121,29 @@ private func preparedShareItem(postbox: Postbox, network: Network, to peerId: Pe
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func getThumbnail(_ avAsset: AVURLAsset) -> Signal<UIImage?, NoError> {
|
||||||
|
return Signal { subscriber in
|
||||||
|
let imageGenerator = AVAssetImageGenerator(asset: asset)
|
||||||
|
imageGenerator.appliesPreferredTrackTransform = true
|
||||||
|
imageGenerator.maximumSize = CGSize(width: 640, height: 640)
|
||||||
|
imageGenerator.generateCGImagesAsynchronously(forTimes: [NSValue(time: CMTime(seconds: 0, preferredTimescale: CMTimeScale(30.0)))]) { _, image, _, _, _ in
|
||||||
|
subscriber.putNext(image.flatMap { UIImage(cgImage: $0) })
|
||||||
|
subscriber.putCompletion()
|
||||||
|
}
|
||||||
|
return ActionDisposable {
|
||||||
|
imageGenerator.cancelAllCGImageGeneration()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
return .single(.preparing(true))
|
return .single(.preparing(true))
|
||||||
|> then(
|
|> then(
|
||||||
loadValues(asset)
|
loadValues(asset)
|
||||||
|> mapToSignal { asset -> Signal<PreparedShareItem, PreparedShareItemError> in
|
|> mapToSignal { asset -> Signal<PreparedShareItem, PreparedShareItemError> in
|
||||||
|
return getThumbnail(asset)
|
||||||
|
|> castError(PreparedShareItemError.self)
|
||||||
|
|> mapToSignal { thumbnail -> Signal<PreparedShareItem, PreparedShareItemError> in
|
||||||
let preset = adjustments?.preset ?? TGMediaVideoConversionPresetCompressedMedium
|
let preset = adjustments?.preset ?? TGMediaVideoConversionPresetCompressedMedium
|
||||||
let finalDimensions = TGMediaVideoConverter.dimensions(for: asset.originalSize, adjustments: adjustments, preset: preset)
|
let finalDimensions = TGMediaVideoConverter.dimensions(for: asset.originalSize, adjustments: adjustments, preset: preset)
|
||||||
|
|
||||||
@ -143,8 +162,10 @@ private func preparedShareItem(postbox: Postbox, network: Network, to peerId: Pe
|
|||||||
|
|
||||||
let estimatedSize = TGMediaVideoConverter.estimatedSize(for: preset, duration: finalDuration, hasAudio: true)
|
let estimatedSize = TGMediaVideoConverter.estimatedSize(for: preset, duration: finalDuration, hasAudio: true)
|
||||||
|
|
||||||
|
let thumbnailData = thumbnail?.jpegData(compressionQuality: 0.6)
|
||||||
|
|
||||||
let resource = LocalFileVideoMediaResource(randomId: Int64.random(in: Int64.min ... Int64.max), path: asset.url.path, adjustments: resourceAdjustments)
|
let resource = LocalFileVideoMediaResource(randomId: Int64.random(in: Int64.min ... Int64.max), path: asset.url.path, adjustments: resourceAdjustments)
|
||||||
return standaloneUploadedFile(postbox: postbox, network: network, peerId: peerId, text: "", source: .resource(.standalone(resource: resource)), mimeType: "video/mp4", attributes: [.Video(duration: finalDuration, size: PixelDimensions(width: Int32(finalDimensions.width), height: Int32(finalDimensions.height)), flags: flags, preloadSize: nil, coverTime: nil, videoCodec: nil)], hintFileIsLarge: estimatedSize > 10 * 1024 * 1024)
|
return standaloneUploadedFile(postbox: postbox, network: network, peerId: peerId, text: "", source: .resource(.standalone(resource: resource)), thumbnailData: thumbnailData, mimeType: "video/mp4", attributes: [.Video(duration: finalDuration, size: PixelDimensions(width: Int32(finalDimensions.width), height: Int32(finalDimensions.height)), flags: flags, preloadSize: nil, coverTime: 0.0, videoCodec: nil)], hintFileIsLarge: estimatedSize > 10 * 1024 * 1024)
|
||||||
|> mapError { _ -> PreparedShareItemError in
|
|> mapError { _ -> PreparedShareItemError in
|
||||||
return .generic
|
return .generic
|
||||||
}
|
}
|
||||||
@ -157,6 +178,7 @@ private func preparedShareItem(postbox: Postbox, network: Network, to peerId: Pe
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
)
|
)
|
||||||
} else if let data = value["data"] as? Data {
|
} else if let data = value["data"] as? Data {
|
||||||
let fileName = value["fileName"] as? String
|
let fileName = value["fileName"] as? String
|
||||||
|
|||||||
@ -580,7 +580,8 @@ public final class ChatTextInputMediaRecordingButton: TGModernConversationInputM
|
|||||||
self.previousSize = size
|
self.previousSize = size
|
||||||
if let view = self.animationView.view {
|
if let view = self.animationView.view {
|
||||||
let iconSize = view.bounds.size
|
let iconSize = view.bounds.size
|
||||||
view.frame = CGRect(origin: CGPoint(x: floor((size.width - iconSize.width) / 2.0), y: floor((size.height - iconSize.height) / 2.0)), size: iconSize)
|
view.bounds = CGRect(origin: .zero, size: iconSize)
|
||||||
|
view.center = CGPoint(x: size.width / 2.0, y: size.height / 2.0)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2225,7 +2225,7 @@ class ChatTextInputPanelNode: ChatInputPanelNode, ASEditableTextNodeDelegate, Ch
|
|||||||
hideInfo = true
|
hideInfo = true
|
||||||
}
|
}
|
||||||
case .waitingForPreview:
|
case .waitingForPreview:
|
||||||
Queue.mainQueue().after(0.3, {
|
Queue.mainQueue().after(0.5, {
|
||||||
self.actionButtons.micButton.audioRecorder = nil
|
self.actionButtons.micButton.audioRecorder = nil
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user