This commit is contained in:
Ali 2021-03-17 12:02:59 +04:00
parent 5f8bd57ca2
commit 26dd9b05dc
6 changed files with 35 additions and 6 deletions

View File

@ -16,6 +16,8 @@ swift_library(
"//submodules/AppBundle:AppBundle",
"//submodules/AccountContext:AccountContext",
"//submodules/Emoji:Emoji",
"//submodules/ImageCompression:ImageCompression",
"//submodules/TinyThumbnail:TinyThumbnail",
],
visibility = [
"//visibility:public",

View File

@ -6,6 +6,8 @@ import Display
import ImageIO
import TelegramCore
import SyncCore
import ImageCompression
import TinyThumbnail
private let roundCorners = { () -> UIImage in
let diameter: CGFloat = 60.0
@ -101,7 +103,7 @@ public func peerAvatarImage(account: Account, peerReference: PeerReference?, aut
}
let roundedImage = generateImage(displayDimensions, contextGenerator: { size, context -> Void in
if let data = data {
if let imageSource = CGImageSourceCreateWithData(data as CFData, nil), let dataImage = CGImageSourceCreateImageAtIndex(imageSource, 0, nil) {
if let imageSource = CGImageSourceCreateWithData(data as CFData, nil), var dataImage = CGImageSourceCreateImageAtIndex(imageSource, 0, nil) {
context.clear(CGRect(origin: CGPoint(), size: displayDimensions))
context.setBlendMode(.copy)
@ -109,6 +111,15 @@ public func peerAvatarImage(account: Account, peerReference: PeerReference?, aut
context.addEllipse(in: CGRect(origin: CGPoint(), size: displayDimensions).insetBy(dx: inset, dy: inset))
context.clip()
}
let mappedImage = UIImage(cgImage: dataImage)
if let miniData = compressImageMiniThumbnail(mappedImage, type: .avatar) {
if let decodedData = decodeTinyThumbnail(data: miniData) {
if let decodedImage = UIImage(data: decodedData) {
dataImage = decodedImage.cgImage!
}
}
}
context.draw(dataImage, in: CGRect(origin: CGPoint(), size: displayDimensions).insetBy(dx: inset, dy: inset))
if round {

View File

@ -58,6 +58,11 @@ public func compressImage(_ image: UIImage, quality: Float) -> Data? {
return data as Data
}
public func compressImageMiniThumbnail(_ image: UIImage) -> Data? {
return compressMiniThumbnail(image)
public enum MiniThumbnailType {
case image
case avatar
}
public func compressImageMiniThumbnail(_ image: UIImage, type: MiniThumbnailType = .image) -> Data? {
return compressMiniThumbnail(image, type == .avatar)
}

View File

@ -2,4 +2,4 @@
NSData * _Nullable compressJPEGData(UIImage * _Nonnull sourceImage);
NSArray<NSNumber *> * _Nonnull extractJPEGDataScans(NSData * _Nonnull data);
NSData * _Nullable compressMiniThumbnail(UIImage * _Nonnull image);
NSData * _Nullable compressMiniThumbnail(UIImage * _Nonnull image, bool smaller);

View File

@ -146,8 +146,12 @@ NSData * _Nullable compressJPEGData(UIImage * _Nonnull sourceImage) {
return result;
}
NSData * _Nullable compressMiniThumbnail(UIImage * _Nonnull image) {
NSData * _Nullable compressMiniThumbnail(UIImage * _Nonnull image, bool smaller) {
CGSize size = CGSizeMake(40.0f, 40.0f);
if (smaller) {
size.width = 8.0f;
size.height = 8.0f;
}
CGSize fittedSize = image.size;
if (fittedSize.width > size.width) {
fittedSize = CGSizeMake(size.width, (int)((fittedSize.height * size.width / MAX(fittedSize.width, 1.0f))));

View File

@ -143,7 +143,14 @@ private func requestActivity(postbox: Postbox, network: Network, accountPeerId:
return .complete()
}
if let channel = peer as? TelegramChannel, case .broadcast = channel.info {
return .complete()
if let activity = activity {
switch activity {
case .speakingInGroupCall:
break
default:
return .complete()
}
}
}
if let _ = peer as? TelegramUser {
if let presence = transaction.getPeerPresence(peerId: peerId) as? TelegramUserPresence {