mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-11-07 01:10:09 +00:00
Merge commit 'e7772bb581b908355828dc2ca13643c7df6028c5'
This commit is contained in:
commit
d574855c17
@ -484,6 +484,17 @@ public extension UIImage {
|
|||||||
}
|
}
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func fixedOrientation() -> UIImage {
|
||||||
|
if self.imageOrientation == .up { return self }
|
||||||
|
|
||||||
|
UIGraphicsBeginImageContextWithOptions(self.size, false, self.scale)
|
||||||
|
self.draw(in: CGRect(origin: .zero, size: size))
|
||||||
|
let normalizedImage = UIGraphicsGetImageFromCurrentImageContext()
|
||||||
|
UIGraphicsEndImageContext()
|
||||||
|
|
||||||
|
return normalizedImage ?? self
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private func makeSubtreeSnapshot(layer: CALayer, keepPortals: Bool = false, keepTransform: Bool = false) -> UIView? {
|
private func makeSubtreeSnapshot(layer: CALayer, keepPortals: Bool = false, keepTransform: Bool = false) -> UIView? {
|
||||||
|
|||||||
@ -1259,7 +1259,7 @@ public final class ShareController: ViewController {
|
|||||||
var result: [EnginePeer.Id: EnginePeer?] = [:]
|
var result: [EnginePeer.Id: EnginePeer?] = [:]
|
||||||
var requiresStars: [EnginePeer.Id: StarsAmount] = [:]
|
var requiresStars: [EnginePeer.Id: StarsAmount] = [:]
|
||||||
for peerId in peerIds {
|
for peerId in peerIds {
|
||||||
if let view = views.views[PostboxViewKey.basicPeer(peerId)] as? PeerView, let peer = peerViewMainPeer(view) {
|
if let view = views.views[PostboxViewKey.peer(peerId: peerId, components: [])] as? PeerView, let peer = peerViewMainPeer(view) {
|
||||||
result[peerId] = EnginePeer(peer)
|
result[peerId] = EnginePeer(peer)
|
||||||
if peer is TelegramUser, let cachedPeerDataView = views.views[PostboxViewKey.cachedPeerData(peerId: peerId)] as? CachedPeerDataView {
|
if peer is TelegramUser, let cachedPeerDataView = views.views[PostboxViewKey.cachedPeerData(peerId: peerId)] as? CachedPeerDataView {
|
||||||
if let cachedData = cachedPeerDataView.cachedPeerData as? CachedUserData {
|
if let cachedData = cachedPeerDataView.cachedPeerData as? CachedUserData {
|
||||||
@ -1913,7 +1913,7 @@ public final class ShareController: ViewController {
|
|||||||
var result: [EnginePeer.Id: EnginePeer?] = [:]
|
var result: [EnginePeer.Id: EnginePeer?] = [:]
|
||||||
var requiresStars: [EnginePeer.Id: StarsAmount] = [:]
|
var requiresStars: [EnginePeer.Id: StarsAmount] = [:]
|
||||||
for peerId in peerIds {
|
for peerId in peerIds {
|
||||||
if let view = views.views[PostboxViewKey.basicPeer(peerId)] as? PeerView, let peer = peerViewMainPeer(view) {
|
if let view = views.views[PostboxViewKey.peer(peerId: peerId, components: [])] as? PeerView, let peer = peerViewMainPeer(view) {
|
||||||
result[peerId] = EnginePeer(peer)
|
result[peerId] = EnginePeer(peer)
|
||||||
if peer is TelegramUser, let cachedPeerDataView = views.views[PostboxViewKey.cachedPeerData(peerId: peerId)] as? CachedPeerDataView {
|
if peer is TelegramUser, let cachedPeerDataView = views.views[PostboxViewKey.cachedPeerData(peerId: peerId)] as? CachedPeerDataView {
|
||||||
if let cachedData = cachedPeerDataView.cachedPeerData as? CachedUserData {
|
if let cachedData = cachedPeerDataView.cachedPeerData as? CachedUserData {
|
||||||
@ -2549,7 +2549,7 @@ public final class ShareController: ViewController {
|
|||||||
if let view = views.views[.cachedPeerData(peerId: id)] as? CachedPeerDataView, let data = view.cachedPeerData as? CachedUserData {
|
if let view = views.views[.cachedPeerData(peerId: id)] as? CachedPeerDataView, let data = view.cachedPeerData as? CachedUserData {
|
||||||
requiresPremiumForMessaging[id] = data.flags.contains(.premiumRequired)
|
requiresPremiumForMessaging[id] = data.flags.contains(.premiumRequired)
|
||||||
requiresStars[id] = data.sendPaidMessageStars?.value
|
requiresStars[id] = data.sendPaidMessageStars?.value
|
||||||
} else if let view = views.views[.basicPeer(id)] as? PeerView, let channel = peerViewMainPeer(view) as? TelegramChannel {
|
} else if let view = views.views[.peer(peerId: id, components: [])] as? PeerView, let channel = peerViewMainPeer(view) as? TelegramChannel {
|
||||||
requiresStars[id] = channel.sendPaidMessageStars?.value
|
requiresStars[id] = channel.sendPaidMessageStars?.value
|
||||||
} else {
|
} else {
|
||||||
requiresPremiumForMessaging[id] = false
|
requiresPremiumForMessaging[id] = false
|
||||||
|
|||||||
@ -1657,6 +1657,10 @@ private final class GiftViewSheetContent: CombinedComponent {
|
|||||||
convertStars = nil
|
convertStars = nil
|
||||||
titleString = ""
|
titleString = ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if !canUpgrade, let gift = state.starGiftsMap[giftId], let _ = gift.upgradeStars {
|
||||||
|
canUpgrade = true
|
||||||
|
}
|
||||||
|
|
||||||
var showUpgradePreview = false
|
var showUpgradePreview = false
|
||||||
if state.inUpgradePreview, let _ = state.sampleGiftAttributes {
|
if state.inUpgradePreview, let _ = state.sampleGiftAttributes {
|
||||||
|
|||||||
@ -1890,8 +1890,8 @@ public class TrimView: UIView {
|
|||||||
effectiveHandleWidth = 16.0
|
effectiveHandleWidth = 16.0
|
||||||
fullTrackHeight = 33.0
|
fullTrackHeight = 33.0
|
||||||
capsuleOffset = 8.0
|
capsuleOffset = 8.0
|
||||||
color = .clear
|
color = theme.chat.inputPanel.panelControlAccentColor
|
||||||
highlightColor = .clear
|
highlightColor = theme.chat.inputPanel.panelControlAccentColor
|
||||||
|
|
||||||
self.zoneView.backgroundColor = UIColor(white: 1.0, alpha: 0.4)
|
self.zoneView.backgroundColor = UIColor(white: 1.0, alpha: 0.4)
|
||||||
|
|
||||||
@ -1902,7 +1902,19 @@ public class TrimView: UIView {
|
|||||||
context.fill(CGRect(origin: .zero, size: CGSize(width: 1.0, height: size.height)))
|
context.fill(CGRect(origin: .zero, size: CGSize(width: 1.0, height: size.height)))
|
||||||
context.fill(CGRect(origin: CGPoint(x: size.width - 1.0, y: 0.0), size: CGSize(width: 1.0, height: size.height)))
|
context.fill(CGRect(origin: CGPoint(x: size.width - 1.0, y: 0.0), size: CGSize(width: 1.0, height: size.height)))
|
||||||
})?.withRenderingMode(.alwaysTemplate).resizableImage(withCapInsets: UIEdgeInsets(top: 0.0, left: 1.0, bottom: 0.0, right: 1.0))
|
})?.withRenderingMode(.alwaysTemplate).resizableImage(withCapInsets: UIEdgeInsets(top: 0.0, left: 1.0, bottom: 0.0, right: 1.0))
|
||||||
|
|
||||||
|
let handleImage = generateImage(CGSize(width: effectiveHandleWidth, height: fullTrackHeight), rotatedContext: { size, context in
|
||||||
|
context.clear(CGRect(origin: .zero, size: size))
|
||||||
|
context.setFillColor(UIColor.white.cgColor)
|
||||||
|
|
||||||
|
let path = UIBezierPath(roundedRect: CGRect(origin: .zero, size: CGSize(width: size.width * 2.0, height: size.height)), cornerRadius: 16.5)
|
||||||
|
context.addPath(path.cgPath)
|
||||||
|
context.fillPath()
|
||||||
|
})?.withRenderingMode(.alwaysTemplate)
|
||||||
|
|
||||||
|
self.leftHandleView.image = handleImage
|
||||||
|
self.rightHandleView.image = handleImage
|
||||||
|
|
||||||
self.leftCapsuleView.backgroundColor = .white
|
self.leftCapsuleView.backgroundColor = .white
|
||||||
self.rightCapsuleView.backgroundColor = .white
|
self.rightCapsuleView.backgroundColor = .white
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1842,12 +1842,13 @@ public final class MessageInputPanelComponent: Component {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let lightFieldColor = UIColor(white: 1.0, alpha: 0.09)
|
var lightFieldColor = UIColor(white: 1.0, alpha: 0.09)
|
||||||
var fieldBackgroundIsDark = false
|
var fieldBackgroundIsDark = false
|
||||||
if component.useGrayBackground {
|
if component.useGrayBackground {
|
||||||
fieldBackgroundIsDark = false
|
fieldBackgroundIsDark = false
|
||||||
} else if component.style == .media {
|
} else if component.style == .media {
|
||||||
fieldBackgroundIsDark = false
|
fieldBackgroundIsDark = false
|
||||||
|
lightFieldColor = UIColor(white: 0.2, alpha: 0.45)
|
||||||
} else if self.textFieldExternalState.hasText && component.alwaysDarkWhenHasText {
|
} else if self.textFieldExternalState.hasText && component.alwaysDarkWhenHasText {
|
||||||
fieldBackgroundIsDark = true
|
fieldBackgroundIsDark = true
|
||||||
} else if isEditing || component.style == .story || component.style == .editor {
|
} else if isEditing || component.style == .story || component.style == .editor {
|
||||||
|
|||||||
@ -898,7 +898,7 @@ func openResolvedUrlImpl(
|
|||||||
|
|
||||||
func subject(for path: String) -> MediaEditorScreenImpl.Subject? {
|
func subject(for path: String) -> MediaEditorScreenImpl.Subject? {
|
||||||
if path.hasSuffix(".jpg") {
|
if path.hasSuffix(".jpg") {
|
||||||
if let image = UIImage(contentsOfFile: path) {
|
if let image = UIImage(contentsOfFile: path)?.fixedOrientation() {
|
||||||
return .image(image: image, dimensions: PixelDimensions(image.size), additionalImage: nil, additionalImagePosition: .topLeft, fromCamera: false)
|
return .image(image: image, dimensions: PixelDimensions(image.size), additionalImage: nil, additionalImagePosition: .topLeft, fromCamera: false)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user