From 0ec1736ff8d970f8aceb4b6459d48e8b1bdc9bcb Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Thu, 24 Sep 2020 11:12:54 +0300 Subject: [PATCH] Fix donated saved messages avatar Add custom placeholder for donated avatarless chats --- .../Sources/TelegramIntents.swift | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/submodules/TelegramIntents/Sources/TelegramIntents.swift b/submodules/TelegramIntents/Sources/TelegramIntents.swift index d854d12d3d..52075889b6 100644 --- a/submodules/TelegramIntents/Sources/TelegramIntents.swift +++ b/submodules/TelegramIntents/Sources/TelegramIntents.swift @@ -12,7 +12,7 @@ import AvatarNode import AccountContext private let savedMessagesAvatar: UIImage = { - return generateImage(CGSize(width: 60.0, height: 60.0), contextGenerator: { size, context in + return generateImage(CGSize(width: 60.0, height: 60.0), rotatedContext: { size, context in var locations: [CGFloat] = [1.0, 0.0] let colorSpace = CGColorSpaceCreateDeviceRGB() @@ -68,6 +68,7 @@ public func donateSendMessageIntent(account: Account, sharedContext: SharedAccou |> mapToSignal { unlocked -> Signal<[(Peer, SendMessageIntentSubject, UIImage?)], NoError> in if unlocked { return sharedContext.accountManager.sharedData(keys: [ApplicationSpecificSharedDataKeys.intentsSettings]) + |> take(1) |> mapToSignal { sharedData -> Signal<[(Peer, SendMessageIntentSubject)], NoError> in let settings = (sharedData.entries[ApplicationSpecificSharedDataKeys.intentsSettings] as? IntentsSettings) ?? IntentsSettings.defaultSettings if let accountId = settings.account, accountId != account.peerId { @@ -136,7 +137,20 @@ public func donateSendMessageIntent(account: Account, sharedContext: SharedAccou } else { let peerAndAvatar = (peerAvatarImage(account: account, peerReference: PeerReference(peer), authorOfMessage: nil, representation: peer.smallProfileImage, round: false) ?? .single(nil)) |> map { imageVersions -> (Peer, SendMessageIntentSubject, UIImage?) in - let avatarImage = imageVersions?.0 + var avatarImage: UIImage? + if let image = imageVersions?.0 { + avatarImage = image + } else { + let avatarFont = avatarPlaceholderFont(size: 26.0) + let size = CGSize(width: 60.0, height: 60.0) + if let image = generateImage(size, rotatedContext: { size, context in + context.clear(CGRect(origin: CGPoint(), size: size)) + + drawPeerAvatarLetters(context: context, size: CGSize(width: size.width, height: size.height), font: avatarFont, letters: peer.displayLetters, peerId: peer.id) + })?.withRenderingMode(.alwaysOriginal) { + avatarImage = image + } + } return (peer, subject, avatarImage) } signals.append(peerAndAvatar) @@ -151,7 +165,7 @@ public func donateSendMessageIntent(account: Account, sharedContext: SharedAccou |> deliverOnMainQueue).start(next: { peers in let presentationData = sharedContext.currentPresentationData.with { $0 } - for (peer, subject, avatarImage) in peers { + for (peer, _, avatarImage) in peers { let recipientHandle = INPersonHandle(value: "tg\(peer.id.toInt64())", type: .unknown) let displayTitle: String var nameComponents = PersonNameComponents()