diff --git a/Telegram/Telegram-iOS/en.lproj/Localizable.strings b/Telegram/Telegram-iOS/en.lproj/Localizable.strings index eb32196aca..3be4062005 100644 --- a/Telegram/Telegram-iOS/en.lproj/Localizable.strings +++ b/Telegram/Telegram-iOS/en.lproj/Localizable.strings @@ -6605,6 +6605,7 @@ Sorry for the inconvenience."; "Conversation.ForwardOptions.SendMessages" = "Send Messages"; "Conversation.ForwardOptions.TapForOptions" = "Tap here for forwarding options"; +"Conversation.ForwardOptions.TapForOptionsShort" = "Tap here for options"; "Conversation.ForwardOptions.UserMessageForwardVisible" = "%@ will see that it was forwarded"; "Conversation.ForwardOptions.UserMessageForwardHidden" = "%@ won't see that it was forwarded"; @@ -6671,6 +6672,9 @@ Sorry for the inconvenience."; "Notification.YouChangedTheme" = "You changed chat theme to %@"; "Notification.YouDisabledTheme" = "You disabled chat theme"; +"Notification.ChannelChangedTheme" = "Channel theme changed to %2$@"; +"Notification.ChannelDisabledTheme" = "Channel theme disabled"; + "Appstore.Cloud" = "**Cloud-based**\nUnlimited storage for chats,\nmedia and documents."; "Appstore.Cloud.Profile" = "**Jennifer**\n23 y.o. designer from San Francisco."; "Appstore.Creative" = "**Creative**\nColor themes, stickers, GIFs,\nvideo messages and more."; diff --git a/submodules/AccountContext/Sources/ChatController.swift b/submodules/AccountContext/Sources/ChatController.swift index f209bb9509..5d32ba1933 100644 --- a/submodules/AccountContext/Sources/ChatController.swift +++ b/submodules/AccountContext/Sources/ChatController.swift @@ -367,10 +367,20 @@ public struct ChatTextInputStateText: Codable, Equatable { } public enum ChatControllerSubject: Equatable { + public struct ForwardOptions: Equatable { + public let hideNames: Bool + public let hideCaptions: Bool + + public init(hideNames: Bool, hideCaptions: Bool) { + self.hideNames = hideNames + self.hideCaptions = hideCaptions + } + } + case message(id: EngineMessage.Id, highlight: Bool, timecode: Double?) case scheduledMessages case pinnedMessages(id: EngineMessage.Id?) - case forwardedMessages(ids: [EngineMessage.Id], hideNames: Signal, hideCaptions: Signal) + case forwardedMessages(ids: [EngineMessage.Id], options: Signal) public static func ==(lhs: ChatControllerSubject, rhs: ChatControllerSubject) -> Bool { switch lhs { @@ -392,8 +402,8 @@ public enum ChatControllerSubject: Equatable { } else { return false } - case let .forwardedMessages(lhsIds, _, _): - if case let .forwardedMessages(rhsIds, _, _) = rhs, lhsIds == rhsIds { + case let .forwardedMessages(lhsIds, _): + if case let .forwardedMessages(rhsIds, _) = rhs, lhsIds == rhsIds { return true } else { return false diff --git a/submodules/ContextUI/Sources/ContextController.swift b/submodules/ContextUI/Sources/ContextController.swift index d2e3da284c..907df33043 100644 --- a/submodules/ContextUI/Sources/ContextController.swift +++ b/submodules/ContextUI/Sources/ContextController.swift @@ -120,6 +120,7 @@ private final class ContextControllerNode: ViewControllerTracingNode, UIScrollVi private let reactionSelected: (ReactionContextItem.Reaction) -> Void private let beganAnimatingOut: () -> Void private let attemptTransitionControllerIntoNavigation: () -> Void + fileprivate var dismissedForCancel: (() -> Void)? private let getController: () -> ContextControllerProtocol? private weak var gesture: ContextGesture? private var displayTextSelectionTip: Bool @@ -478,6 +479,7 @@ private final class ContextControllerNode: ViewControllerTracingNode, UIScrollVi } @objc private func dimNodeTapped() { + self.dismissedForCancel?() self.beginDismiss(.default) } @@ -1817,6 +1819,11 @@ public final class ContextController: ViewController, StandalonePresentableContr public var reactionSelected: ((ReactionContextItem.Reaction) -> Void)? public var dismissed: (() -> Void)? + public var dismissedForCancel: (() -> Void)? { + didSet { + self.controllerNode.dismissedForCancel = self.dismissedForCancel + } + } public var useComplexItemsTransitionAnimation = false public var immediateItemsTransitionAnimation = false @@ -1872,7 +1879,7 @@ public final class ContextController: ViewController, StandalonePresentableContr override public func loadDisplayNode() { self.displayNode = ContextControllerNode(account: self.account, controller: self, presentationData: self.presentationData, source: self.source, items: self.items, reactionItems: self.reactionItems, beginDismiss: { [weak self] result in self?.dismiss(result: result, completion: nil) - }, recognizer: self.recognizer, gesture: self.gesture, reactionSelected: { [weak self] value in + }, recognizer: self.recognizer, gesture: self.gesture, reactionSelected: { [weak self] value in guard let strongSelf = self else { return } @@ -1893,7 +1900,7 @@ public final class ContextController: ViewController, StandalonePresentableContr break } }, displayTextSelectionTip: self.displayTextSelectionTip) - + self.controllerNode.dismissedForCancel = self.dismissedForCancel self.displayNodeDidLoad() self._ready.set(combineLatest(queue: .mainQueue(), self.controllerNode.itemsReady.get(), self.controllerNode.contentReady.get()) diff --git a/submodules/TelegramCallsUI/Sources/VoiceChatController.swift b/submodules/TelegramCallsUI/Sources/VoiceChatController.swift index 101d082160..869fdd3dc1 100644 --- a/submodules/TelegramCallsUI/Sources/VoiceChatController.swift +++ b/submodules/TelegramCallsUI/Sources/VoiceChatController.swift @@ -4258,7 +4258,7 @@ public final class VoiceChatController: ViewController { childrenSafeInsets.right = childrenSafeInsets.left + (size.width - contentLeftInset) } } else if !self.isLandscape, case .fullscreen = effectiveDisplayMode { - childrenInsets.bottom += self.effectiveBottomAreaHeight + fullscreenListHeight + 30.0 + childrenInsets.bottom += self.effectiveBottomAreaHeight + fullscreenListHeight + 36.0 } childrenLayout.safeInsets = childrenSafeInsets childrenLayout.intrinsicInsets = childrenInsets diff --git a/submodules/TelegramCallsUI/Sources/VoiceChatFullscreenParticipantItem.swift b/submodules/TelegramCallsUI/Sources/VoiceChatFullscreenParticipantItem.swift index d2b25b7365..16a2c7b461 100644 --- a/submodules/TelegramCallsUI/Sources/VoiceChatFullscreenParticipantItem.swift +++ b/submodules/TelegramCallsUI/Sources/VoiceChatFullscreenParticipantItem.swift @@ -389,7 +389,7 @@ class VoiceChatFullscreenParticipantItemNode: ItemListRevealOptionsItemNode { profileNode.frame = CGRect(origin: CGPoint(), size: extractedRect.size) self.profileNode = profileNode self.contextSourceNode.contentNode.addSubnode(profileNode) - + profileNode.animateIn(from: self, targetRect: extractedRect, transition: transition) var appearenceTransition = transition if transition.isAnimated { @@ -706,20 +706,28 @@ class VoiceChatFullscreenParticipantItemNode: ItemListRevealOptionsItemNode { audioLevelView.layer.mask = playbackMaskLayer audioLevelView.setColor(wavesColor) - audioLevelView.alpha = strongSelf.isExtracted ? 0.0 : 1.0 strongSelf.audioLevelView = audioLevelView strongSelf.offsetContainerNode.view.insertSubview(audioLevelView, at: 0) - - if let _ = strongSelf.item, strongSelf.videoNode != nil && !active { - audioLevelView.alpha = 0.0 - } } let level = min(1.0, max(0.0, CGFloat(value))) if let audioLevelView = strongSelf.audioLevelView { audioLevelView.updateLevel(CGFloat(value)) + var hasVideo = false + if let videoNode = strongSelf.videoNode, videoNode.supernode == strongSelf.videoContainerNode, !videoNode.alpha.isZero { + hasVideo = true + } + + var audioLevelAlpha: CGFloat = 1.0 + if strongSelf.isExtracted { + audioLevelAlpha = 0.0 + } else { + audioLevelAlpha = hasVideo ? 0.0 : 1.0 + } + audioLevelView.alpha = audioLevelAlpha + let avatarScale: CGFloat if value > 0.02 { audioLevelView.startAnimating() diff --git a/submodules/TelegramPresentationData/Sources/DefaultDayPresentationTheme.swift b/submodules/TelegramPresentationData/Sources/DefaultDayPresentationTheme.swift index 413a7daeac..0ae9557afe 100644 --- a/submodules/TelegramPresentationData/Sources/DefaultDayPresentationTheme.swift +++ b/submodules/TelegramPresentationData/Sources/DefaultDayPresentationTheme.swift @@ -35,7 +35,7 @@ public let defaultServiceBackgroundColor = UIColor(rgb: 0x000000, alpha: 0.2) public let defaultPresentationTheme = makeDefaultDayPresentationTheme(serviceBackgroundColor: defaultServiceBackgroundColor, day: false, preview: false) public let defaultDayAccentColor = UIColor(rgb: 0x007ee5) -public func customizeDefaultDayTheme(theme: PresentationTheme, editing: Bool, title: String?, accentColor: UIColor?, backgroundColors: [UInt32], bubbleColors: [UInt32], animateBubbleColors: Bool?, wallpaper forcedWallpaper: TelegramWallpaper? = nil, serviceBackgroundColor: UIColor?) -> PresentationTheme { +public func customizeDefaultDayTheme(theme: PresentationTheme, specialMode: Bool = false, editing: Bool, title: String?, accentColor: UIColor?, backgroundColors: [UInt32], bubbleColors: [UInt32], animateBubbleColors: Bool?, wallpaper forcedWallpaper: TelegramWallpaper? = nil, serviceBackgroundColor: UIColor?) -> PresentationTheme { if (theme.referenceTheme != .day && theme.referenceTheme != .dayClassic) { return theme } @@ -52,24 +52,110 @@ public func customizeDefaultDayTheme(theme: PresentationTheme, editing: Bool, ti var suggestedWallpaper: TelegramWallpaper? var bubbleColors = bubbleColors - if bubbleColors.isEmpty, editing { - if day { - let accentColor = accentColor ?? defaultDayAccentColor - bubbleColors = [accentColor.withMultiplied(hue: 0.966, saturation: 0.61, brightness: 0.98).rgb, accentColor.rgb] - } else { - if let accentColor = accentColor, !accentColor.alpha.isZero { - let hsb = accentColor.hsb - bubbleColors = [UIColor(hue: hsb.0, saturation: (hsb.1 > 0.0 && hsb.2 > 0.0) ? 0.14 : 0.0, brightness: 0.79 + hsb.2 * 0.21, alpha: 1.0).rgb] - if accentColor.lightness > 0.705 { - outgoingAccent = UIColor(hue: hsb.0, saturation: min(1.0, hsb.1 * 1.1), brightness: min(hsb.2, 0.6), alpha: 1.0) - } else { - outgoingAccent = accentColor + if specialMode, bubbleColors.count < 3, let color = bubbleColors.first.flatMap({ UIColor(rgb: $0) }) { + let colorHSB = color.hsb + if colorHSB.b > 0.9 { + let bubbleColor = color.withMultiplied(hue: 0.93, saturation: 1.0, brightness: 1.0) + bubbleColors = [bubbleColor.rgb] + + let colorPairs: [(UInt32, UInt32)] = [ + (0xe8f9d7, 0x6cd516), + (0xe7faff, 0x43b6f9), + (0xe3f7f5, 0x4ccbb8), + (0xfff3cf, 0xe8b816), + (0xfffac9, 0xe2c714), + (0xc5a61e, 0xd6b534) + ] + + func generateAccentColor(color: UIColor) -> UIColor { + var nearest: (color: (UInt32, UInt32), distance: Int32)? + for (sample, accentSample) in colorPairs { + let distance = color.distance(to: UIColor(rgb: sample)) + if let currentNearest = nearest { + if distance < currentNearest.distance { + nearest = ((sample, accentSample), distance) + } + } else { + nearest = ((sample, accentSample), distance) + } } + + if let colors = nearest?.color { + let colorHsb = color.hsb + let similarColorHsb = UIColor(rgb: colors.0).hsb + let complementingColorHsb = UIColor(rgb: colors.1).hsb + + let correction = (similarColorHsb.0 > 0.0 ? colorHsb.0 / similarColorHsb.0 : 1.0, similarColorHsb.1 > 0.0 ? colorHsb.1 / similarColorHsb.1 : 1.0, similarColorHsb.2 > 0.0 ? colorHsb.2 / similarColorHsb.2 : 1.0) + let correctedComplementingColor = UIColor(hue: min(1.0, complementingColorHsb.0 * correction.0), saturation: min(1.0, complementingColorHsb.1 * correction.1), brightness: min(1.0, complementingColorHsb.2 * correction.2), alpha: 1.0) + return correctedComplementingColor + } else { + return color + } + } + + outgoingAccent = generateAccentColor(color: color) +// color.withMultiplied(hue: 1.01, saturation: 7.8, brightness: 0.9) + } else { + let bubbleColor = color.withMultiplied(hue: 1.014, saturation: 0.12, brightness: 1.29) + bubbleColors = [bubbleColor.rgb] + + outgoingAccent = color + } - suggestedWallpaper = .gradient(TelegramWallpaper.Gradient(id: nil, colors: defaultBuiltinWallpaperGradientColors.map(\.rgb), settings: WallpaperSettings())) +// float[] colorHsv = getTempHsv(5); +// Color.colorToHSV(color, colorHsv); +// +// final float diffH = Math.min(Math.abs(colorHsv[0] - baseHsv[0]), Math.abs(colorHsv[0] - baseHsv[0] - 360f)); +// if (diffH > 30f) { +// return color; +// } +// +// float dist = Math.min(1.5f * colorHsv[1] / baseHsv[1], 1f); +// +// colorHsv[0] = colorHsv[0] + accentHsv[0] - baseHsv[0]; +// colorHsv[1] = colorHsv[1] * accentHsv[1] / baseHsv[1]; +// colorHsv[2] = colorHsv[2] * (1f - dist + dist * accentHsv[2] / baseHsv[2]); +// +// int newColor = Color.HSVToColor(Color.alpha(color), colorHsv); +// +// float origBrightness = AndroidUtilities.computePerceivedBrightness(color); +// float newBrightness = AndroidUtilities.computePerceivedBrightness(newColor); +// +// // We need to keep colors lighter in dark themes and darker in light themes +// boolean needRevertBrightness = isDarkTheme ? origBrightness > newBrightness : origBrightness < newBrightness; +// +// if (needRevertBrightness) { +// float amountOfNew = 0.6f; +// float fallbackAmount = (1f - amountOfNew) * origBrightness / newBrightness + amountOfNew; +// newColor = changeBrightness(newColor, fallbackAmount); +// } +// +// return newColor; + +// outgoingAccent = color.withMultiplied(hue: 1.035, saturation: 4.294, brightness: 1.289) +// +// let bubbleColor = color.withMultiplied(hue: 1.014, saturation: 0.101, brightness: 1.289) +// bubbleColors = [bubbleColor.rgb] + } else { + if bubbleColors.isEmpty, editing { + if day { + let accentColor = accentColor ?? defaultDayAccentColor + bubbleColors = [accentColor.withMultiplied(hue: 0.966, saturation: 0.61, brightness: 0.98).rgb, accentColor.rgb] } else { - bubbleColors = [UIColor(rgb: 0xe1ffc7).rgb] - suggestedWallpaper = .gradient(TelegramWallpaper.Gradient(id: nil, colors: defaultBuiltinWallpaperGradientColors.map(\.rgb), settings: WallpaperSettings())) + if let accentColor = accentColor, !accentColor.alpha.isZero { + let hsb = accentColor.hsb + bubbleColors = [UIColor(hue: hsb.0, saturation: (hsb.1 > 0.0 && hsb.2 > 0.0) ? 0.14 : 0.0, brightness: 0.79 + hsb.2 * 0.21, alpha: 1.0).rgb] + if accentColor.lightness > 0.705 { + outgoingAccent = UIColor(hue: hsb.0, saturation: min(1.0, hsb.1 * 1.1), brightness: min(hsb.2, 0.6), alpha: 1.0) + } else { + outgoingAccent = accentColor + } + + suggestedWallpaper = .gradient(TelegramWallpaper.Gradient(id: nil, colors: defaultBuiltinWallpaperGradientColors.map(\.rgb), settings: WallpaperSettings())) + } else { + bubbleColors = [UIColor(rgb: 0xe1ffc7).rgb] + suggestedWallpaper = .gradient(TelegramWallpaper.Gradient(id: nil, colors: defaultBuiltinWallpaperGradientColors.map(\.rgb), settings: WallpaperSettings())) + } } } } @@ -168,7 +254,7 @@ public func customizeDefaultDayTheme(theme: PresentationTheme, editing: Bool, ti outgoingLinkTextColor = outgoingAccent outgoingScamColor = UIColor(rgb: 0xff3b30) outgoingControlColor = outgoingAccent - outgoingInactiveControlColor = outgoingAccent //1111 + outgoingInactiveControlColor = outgoingAccent outgoingFileTitleColor = outgoingAccent outgoingPollsProgressColor = accentColor outgoingSelectionColor = outgoingAccent.withMultiplied(hue: 1.0, saturation: 1.292, brightness: 0.871) diff --git a/submodules/TelegramPresentationData/Sources/MakePresentationTheme.swift b/submodules/TelegramPresentationData/Sources/MakePresentationTheme.swift index 0f5b73c3a0..4687055ee3 100644 --- a/submodules/TelegramPresentationData/Sources/MakePresentationTheme.swift +++ b/submodules/TelegramPresentationData/Sources/MakePresentationTheme.swift @@ -19,13 +19,13 @@ public func makeDefaultPresentationTheme(reference: PresentationBuiltinThemeRefe return theme } -public func customizePresentationTheme(_ theme: PresentationTheme, editing: Bool, title: String? = nil, accentColor: UIColor?, backgroundColors: [UInt32], bubbleColors: [UInt32], animateBubbleColors: Bool?, wallpaper: TelegramWallpaper? = nil, baseColor: PresentationThemeBaseColor? = nil) -> PresentationTheme { +public func customizePresentationTheme(_ theme: PresentationTheme, specialMode: Bool = false, editing: Bool, title: String? = nil, accentColor: UIColor?, backgroundColors: [UInt32], bubbleColors: [UInt32], animateBubbleColors: Bool?, wallpaper: TelegramWallpaper? = nil, baseColor: PresentationThemeBaseColor? = nil) -> PresentationTheme { if accentColor == nil && bubbleColors.isEmpty && backgroundColors.isEmpty && wallpaper == nil { return theme } switch theme.referenceTheme { case .day, .dayClassic: - return customizeDefaultDayTheme(theme: theme, editing: editing, title: title, accentColor: accentColor, backgroundColors: backgroundColors, bubbleColors: bubbleColors, animateBubbleColors: animateBubbleColors ?? false, wallpaper: wallpaper, serviceBackgroundColor: nil) + return customizeDefaultDayTheme(theme: theme, specialMode: specialMode, editing: editing, title: title, accentColor: accentColor, backgroundColors: backgroundColors, bubbleColors: bubbleColors, animateBubbleColors: animateBubbleColors ?? false, wallpaper: wallpaper, serviceBackgroundColor: nil) case .night: return customizeDefaultDarkPresentationTheme(theme: theme, editing: editing, title: title, accentColor: accentColor, backgroundColors: backgroundColors, bubbleColors: bubbleColors, animateBubbleColors: animateBubbleColors ?? false, wallpaper: wallpaper, baseColor: baseColor) case .nightAccent: @@ -33,17 +33,17 @@ public func customizePresentationTheme(_ theme: PresentationTheme, editing: Bool } } -public func makePresentationTheme(settings: TelegramThemeSettings, title: String? = nil, serviceBackgroundColor: UIColor? = nil) -> PresentationTheme? { +public func makePresentationTheme(settings: TelegramThemeSettings, specialMode: Bool = false, title: String? = nil, serviceBackgroundColor: UIColor? = nil) -> PresentationTheme? { let defaultTheme = makeDefaultPresentationTheme(reference: PresentationBuiltinThemeReference(baseTheme: settings.baseTheme), extendingThemeReference: nil, serviceBackgroundColor: serviceBackgroundColor, preview: false) - return customizePresentationTheme(defaultTheme, editing: true, title: title, accentColor: UIColor(argb: settings.accentColor), backgroundColors: [], bubbleColors: settings.messageColors, animateBubbleColors: settings.animateMessageColors, wallpaper: settings.wallpaper) + return customizePresentationTheme(defaultTheme, specialMode: specialMode, editing: true, title: title, accentColor: UIColor(argb: settings.accentColor), backgroundColors: [], bubbleColors: settings.messageColors, animateBubbleColors: settings.animateMessageColors, wallpaper: settings.wallpaper) } -public func makePresentationTheme(mediaBox: MediaBox, themeReference: PresentationThemeReference, extendingThemeReference: PresentationThemeReference? = nil, accentColor: UIColor? = nil, backgroundColors: [UInt32] = [], bubbleColors: [UInt32] = [], animateBubbleColors: Bool? = nil, wallpaper: TelegramWallpaper? = nil, baseColor: PresentationThemeBaseColor? = nil, serviceBackgroundColor: UIColor? = nil, preview: Bool = false) -> PresentationTheme? { +public func makePresentationTheme(mediaBox: MediaBox, themeReference: PresentationThemeReference, extendingThemeReference: PresentationThemeReference? = nil, accentColor: UIColor? = nil, backgroundColors: [UInt32] = [], bubbleColors: [UInt32] = [], animateBubbleColors: Bool? = nil, wallpaper: TelegramWallpaper? = nil, baseColor: PresentationThemeBaseColor? = nil, serviceBackgroundColor: UIColor? = nil, specialMode: Bool = false, preview: Bool = false) -> PresentationTheme? { let theme: PresentationTheme switch themeReference { case let .builtin(reference): let defaultTheme = makeDefaultPresentationTheme(reference: reference, extendingThemeReference: extendingThemeReference, serviceBackgroundColor: serviceBackgroundColor, preview: preview) - theme = customizePresentationTheme(defaultTheme, editing: true, accentColor: accentColor, backgroundColors: backgroundColors, bubbleColors: bubbleColors, animateBubbleColors: animateBubbleColors, wallpaper: wallpaper, baseColor: baseColor) + theme = customizePresentationTheme(defaultTheme, specialMode: specialMode, editing: true, accentColor: accentColor, backgroundColors: backgroundColors, bubbleColors: bubbleColors, animateBubbleColors: animateBubbleColors, wallpaper: wallpaper, baseColor: baseColor) case let .local(info): if let path = mediaBox.completedResourcePath(info.resource), let data = try? Data(contentsOf: URL(fileURLWithPath: path), options: .mappedRead), let loadedTheme = makePresentationTheme(data: data, themeReference: themeReference, resolvedWallpaper: info.resolvedWallpaper) { theme = customizePresentationTheme(loadedTheme, editing: false, accentColor: accentColor, backgroundColors: backgroundColors, bubbleColors: bubbleColors, animateBubbleColors: animateBubbleColors, wallpaper: wallpaper) diff --git a/submodules/TelegramPresentationData/Sources/Resources/PresentationResourcesChat.swift b/submodules/TelegramPresentationData/Sources/Resources/PresentationResourcesChat.swift index 3f1a2e50f0..0c61382d37 100644 --- a/submodules/TelegramPresentationData/Sources/Resources/PresentationResourcesChat.swift +++ b/submodules/TelegramPresentationData/Sources/Resources/PresentationResourcesChat.swift @@ -258,7 +258,7 @@ public struct PresentationResourcesChat { public static func chatInputMediaPanelSavedStickersIcon(_ theme: PresentationTheme) -> UIImage? { return theme.image(PresentationResourceKey.chatInputMediaPanelSavedStickersIconImage.rawValue, { theme in - return generateImage(CGSize(width: 26.0, height: 26.0), contextGenerator: { size, context in + return generateImage(CGSize(width: 42.0, height: 42.0), contextGenerator: { size, context in context.clear(CGRect(origin: CGPoint(), size: size)) if let image = generateTintedImage(image: UIImage(bundleImageName: "Chat/Input/Media/SavedStickersTabIcon"), color: theme.chat.inputMediaPanel.panelIconColor) { context.draw(image.cgImage!, in: CGRect(origin: CGPoint(x: floor((size.width - image.size.width) / 2.0), y: floor((size.height - image.size.height) / 2.0)), size: image.size)) @@ -269,7 +269,7 @@ public struct PresentationResourcesChat { public static func chatInputMediaPanelStickersModeIcon(_ theme: PresentationTheme) -> UIImage? { return theme.image(PresentationResourceKey.chatInputMediaPanelStickersModeIcon.rawValue, { theme in - return generateImage(CGSize(width: 26.0, height: 26.0), contextGenerator: { size, context in + return generateImage(CGSize(width: 42.0, height: 42.0), contextGenerator: { size, context in context.clear(CGRect(origin: CGPoint(), size: size)) if let image = generateTintedImage(image: UIImage(bundleImageName: "Chat/Input/Media/StickersMode"), color: theme.chat.inputMediaPanel.panelIconColor) { context.draw(image.cgImage!, in: CGRect(origin: CGPoint(x: floor((size.width - image.size.width) / 2.0), y: floor((size.height - image.size.height) / 2.0)), size: image.size)) @@ -280,7 +280,7 @@ public struct PresentationResourcesChat { public static func chatInputMediaPanelTrendingGifsIcon(_ theme: PresentationTheme) -> UIImage? { return theme.image(PresentationResourceKey.chatInputMediaPanelTrendingGifsIcon.rawValue, { theme in - return generateImage(CGSize(width: 26.0, height: 26.0), contextGenerator: { size, context in + return generateImage(CGSize(width: 42.0, height: 42.0), contextGenerator: { size, context in context.clear(CGRect(origin: CGPoint(), size: size)) if let image = generateTintedImage(image: UIImage(bundleImageName: "Chat/Input/Media/TrendingGifs"), color: theme.chat.inputMediaPanel.panelIconColor) { context.draw(image.cgImage!, in: CGRect(origin: CGPoint(x: floor((size.width - image.size.width) / 2.0), y: floor((size.height - image.size.height) / 2.0)), size: image.size)) @@ -291,7 +291,7 @@ public struct PresentationResourcesChat { public static func chatInputMediaPanelRecentStickersIcon(_ theme: PresentationTheme) -> UIImage? { return theme.image(PresentationResourceKey.chatInputMediaPanelRecentStickersIconImage.rawValue, { theme in - return generateImage(CGSize(width: 26.0, height: 26.0), contextGenerator: { size, context in + return generateImage(CGSize(width: 42.0, height: 42.0), contextGenerator: { size, context in context.clear(CGRect(origin: CGPoint(), size: size)) if let image = generateTintedImage(image: UIImage(bundleImageName: "Chat/Input/Media/RecentTabIcon"), color: theme.chat.inputMediaPanel.panelIconColor) { context.draw(image.cgImage!, in: CGRect(origin: CGPoint(x: floor((size.width - image.size.width) / 2.0), y: floor((size.height - image.size.height) / 2.0)), size: image.size)) @@ -302,7 +302,7 @@ public struct PresentationResourcesChat { public static func chatInputMediaPanelRecentGifsIconImage(_ theme: PresentationTheme) -> UIImage? { return theme.image(PresentationResourceKey.chatInputMediaPanelRecentGifsIconImage.rawValue, { theme in - return generateImage(CGSize(width: 26.0, height: 26.0), contextGenerator: { size, context in + return generateImage(CGSize(width: 42.0, height: 42.0), contextGenerator: { size, context in context.clear(CGRect(origin: CGPoint(), size: size)) if let image = generateTintedImage(image: UIImage(bundleImageName: "Chat/Input/Media/GifsTabIcon"), color: theme.chat.inputMediaPanel.panelIconColor) { context.draw(image.cgImage!, in: CGRect(origin: CGPoint(x: floor((size.width - image.size.width) / 2.0), y: floor((size.height - image.size.height) / 2.0)), size: image.size)) diff --git a/submodules/TelegramStringFormatting/Sources/ServiceMessageStrings.swift b/submodules/TelegramStringFormatting/Sources/ServiceMessageStrings.swift index b091173984..58cf89ea86 100644 --- a/submodules/TelegramStringFormatting/Sources/ServiceMessageStrings.swift +++ b/submodules/TelegramStringFormatting/Sources/ServiceMessageStrings.swift @@ -531,7 +531,9 @@ public func universalServiceMessageString(presentationData: (PresentationTheme, attributedString = addAttributesToStringWithRanges(resultTitleString._tuple, body: bodyAttributes, argumentAttributes: peerMentionsAttributes(primaryTextColor: primaryTextColor, peerIds: attributePeerIds)) case let .setChatTheme(emoji): if emoji.isEmpty { - if message.author?.id == accountPeerId { + if message.author?.id.namespace == Namespaces.Peer.CloudChannel { + attributedString = NSAttributedString(string: strings.Notification_ChannelDisabledTheme, font: titleFont, textColor: primaryTextColor) + } else if message.author?.id == accountPeerId { attributedString = NSAttributedString(string: strings.Notification_YouDisabledTheme, font: titleFont, textColor: primaryTextColor) } else { let attributePeerIds: [(Int, PeerId?)] = [(0, message.author?.id)] @@ -539,7 +541,9 @@ public func universalServiceMessageString(presentationData: (PresentationTheme, attributedString = addAttributesToStringWithRanges(resultTitleString._tuple, body: bodyAttributes, argumentAttributes: peerMentionsAttributes(primaryTextColor: primaryTextColor, peerIds: attributePeerIds)) } } else { - if message.author?.id == accountPeerId { + if message.author?.id.namespace == Namespaces.Peer.CloudChannel { + attributedString = NSAttributedString(string: strings.Notification_ChannelChangedTheme(emoji).string, font: titleFont, textColor: primaryTextColor) + } else if message.author?.id == accountPeerId { attributedString = NSAttributedString(string: strings.Notification_YouChangedTheme(emoji).string, font: titleFont, textColor: primaryTextColor) } else { let resultTitleString = strings.Notification_ChangedTheme(authorName, emoji) diff --git a/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/GifsTabIcon.imageset/Contents.json b/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/GifsTabIcon.imageset/Contents.json index b741dea23c..4441035928 100644 --- a/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/GifsTabIcon.imageset/Contents.json +++ b/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/GifsTabIcon.imageset/Contents.json @@ -1,7 +1,7 @@ { "images" : [ { - "filename" : "ic_input_gifs.pdf", + "filename" : "gif_48.pdf", "idiom" : "universal" } ], diff --git a/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/GifsTabIcon.imageset/gif_48.pdf b/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/GifsTabIcon.imageset/gif_48.pdf new file mode 100644 index 0000000000..13ef0f5898 --- /dev/null +++ b/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/GifsTabIcon.imageset/gif_48.pdf @@ -0,0 +1,249 @@ +%PDF-1.7 + +1 0 obj + << >> +endobj + +2 0 obj + << /Length 3 0 R >> +stream +/DeviceRGB CS +/DeviceRGB cs +q +1.000000 0.000000 -0.000000 1.000000 30.400024 17.342773 cm +0.000000 0.000000 0.000000 scn +-1.328000 2.657227 m +-1.328000 1.923792 -0.733434 1.329226 0.000000 1.329226 c +0.733434 1.329226 1.328000 1.923792 1.328000 2.657227 c +-1.328000 2.657227 l +h +4.000000 9.329226 m +4.733434 9.329226 5.328000 9.923793 5.328000 10.657227 c +5.328000 11.390660 4.733434 11.985227 4.000000 11.985227 c +4.000000 9.329226 l +h +1.328000 2.657227 m +1.328000 9.377226 l +-1.328000 9.377226 l +-1.328000 2.657227 l +1.328000 2.657227 l +h +1.280000 9.329226 m +4.000000 9.329226 l +4.000000 11.985227 l +1.280000 11.985227 l +1.280000 9.329226 l +h +1.328000 9.377226 m +1.328000 9.492270 1.328034 9.578946 1.329198 9.653058 c +1.330364 9.727207 1.332460 9.769691 1.334489 9.794523 c +1.338678 9.845800 1.338141 9.750368 1.270451 9.617519 c +-1.096062 10.823318 l +-1.250946 10.519341 -1.295081 10.226333 -1.312690 10.010806 c +-1.329033 9.810783 -1.328000 9.579334 -1.328000 9.377226 c +1.328000 9.377226 l +h +1.280000 11.985227 m +1.077892 11.985227 0.846443 11.986259 0.646420 11.969916 c +0.430894 11.952308 0.137886 11.908173 -0.166092 11.753288 c +1.039707 9.386775 l +0.906858 9.319085 0.811426 9.318548 0.862703 9.322738 c +0.887536 9.324766 0.930019 9.326862 1.004169 9.328028 c +1.078280 9.329193 1.164957 9.329226 1.280000 9.329226 c +1.280000 11.985227 l +h +1.270451 9.617519 m +1.219830 9.518170 1.139057 9.437396 1.039707 9.386775 c +-0.166092 11.753288 l +-0.566501 11.549270 -0.892043 11.223727 -1.096062 10.823318 c +1.270451 9.617519 l +h +f +n +Q +q +1.000000 0.000000 -0.000000 1.000000 30.400024 22.144531 cm +0.000000 0.000000 0.000000 scn +0.000000 3.183762 m +-0.733434 3.183762 -1.328000 2.589196 -1.328000 1.855762 c +-1.328000 1.122328 -0.733434 0.527762 0.000000 0.527762 c +0.000000 3.183762 l +h +4.000000 0.527762 m +4.733434 0.527762 5.328000 1.122328 5.328000 1.855762 c +5.328000 2.589196 4.733434 3.183762 4.000000 3.183762 c +4.000000 0.527762 l +h +0.000000 0.527762 m +4.000000 0.527762 l +4.000000 3.183762 l +0.000000 3.183762 l +0.000000 0.527762 l +h +f +n +Q +q +1.000000 0.000000 -0.000000 1.000000 24.799927 17.343750 cm +0.000000 0.000000 0.000000 scn +2.128000 10.656250 m +2.128000 11.389684 1.533434 11.984250 0.800000 11.984250 c +0.066566 11.984250 -0.528000 11.389684 -0.528000 10.656250 c +2.128000 10.656250 l +h +-0.528000 2.656250 m +-0.528000 1.922815 0.066566 1.328250 0.800000 1.328250 c +1.533434 1.328250 2.128000 1.922815 2.128000 2.656250 c +-0.528000 2.656250 l +h +-0.528000 10.656250 m +-0.528000 2.656250 l +2.128000 2.656250 l +2.128000 10.656250 l +-0.528000 10.656250 l +h +f +n +Q +q +1.000000 0.000000 -0.000000 1.000000 13.599976 17.343750 cm +0.000000 0.000000 0.000000 scn +5.231635 9.028395 m +5.882138 8.689614 6.684110 8.942316 7.022890 9.592818 c +7.361670 10.243321 7.108968 11.045293 6.458466 11.384073 c +5.231635 9.028395 l +h +7.584592 5.588284 m +8.889243 5.340351 l +8.901488 5.404787 l +8.907325 5.470116 l +7.584592 5.588284 l +h +5.600000 7.984250 m +4.866566 7.984250 4.272000 7.389684 4.272000 6.656250 c +4.272000 5.922816 4.866566 5.328250 5.600000 5.328250 c +5.600000 7.984250 l +h +6.458466 11.384073 m +5.721497 11.767884 4.884068 11.984250 4.000000 11.984250 c +4.000000 9.328250 l +4.446894 9.328250 4.864512 9.219591 5.231635 9.028395 c +6.458466 11.384073 l +h +4.000000 11.984250 m +1.057427 11.984250 -1.328000 9.598824 -1.328000 6.656250 c +1.328000 6.656250 l +1.328000 8.131955 2.524295 9.328250 4.000000 9.328250 c +4.000000 11.984250 l +h +-1.328000 6.656250 m +-1.328000 3.713677 1.057427 1.328250 4.000000 1.328250 c +4.000000 3.984250 l +2.524295 3.984250 1.328000 5.180545 1.328000 6.656250 c +-1.328000 6.656250 l +h +4.000000 1.328250 m +6.144260 1.328250 8.394547 2.737200 8.889243 5.340351 c +6.279942 5.836216 l +6.056704 4.661514 5.055740 3.984250 4.000000 3.984250 c +4.000000 1.328250 l +h +8.907325 5.470116 m +8.956036 6.015371 l +6.310571 6.251707 l +6.261860 5.706451 l +8.907325 5.470116 l +h +7.155208 7.984250 m +5.600000 7.984250 l +5.600000 5.328250 l +7.155208 5.328250 l +7.155208 7.984250 l +h +8.956036 6.015371 m +9.050537 7.073197 8.217244 7.984250 7.155208 7.984250 c +7.155208 5.328250 l +6.657084 5.328250 6.266247 5.755558 6.310571 6.251707 c +8.956036 6.015371 l +h +f +n +Q +q +1.000000 0.000000 -0.000000 1.000000 5.599976 2.943848 cm +0.000000 0.000000 0.000000 scn +35.472000 21.056055 m +35.472000 11.627451 27.828604 3.984055 18.400000 3.984055 c +18.400000 1.328056 l +29.295473 1.328056 38.127998 10.160582 38.127998 21.056055 c +35.472000 21.056055 l +h +18.400000 3.984055 m +8.971395 3.984055 1.328000 11.627451 1.328000 21.056055 c +-1.328000 21.056055 l +-1.328000 10.160582 7.504526 1.328056 18.400000 1.328056 c +18.400000 3.984055 l +h +1.328000 21.056055 m +1.328000 30.484661 8.971395 38.128056 18.400000 38.128056 c +18.400000 40.784054 l +7.504526 40.784054 -1.328000 31.951529 -1.328000 21.056055 c +1.328000 21.056055 l +h +18.400000 38.128056 m +27.828604 38.128056 35.472000 30.484661 35.472000 21.056055 c +38.127998 21.056055 l +38.127998 31.951529 29.295473 40.784054 18.400000 40.784054 c +18.400000 38.128056 l +h +f +n +Q + +endstream +endobj + +3 0 obj + 5025 +endobj + +4 0 obj + << /Annots [] + /Type /Page + /MediaBox [ 0.000000 0.000000 48.000000 48.000000 ] + /Resources 1 0 R + /Contents 2 0 R + /Parent 5 0 R + >> +endobj + +5 0 obj + << /Kids [ 4 0 R ] + /Count 1 + /Type /Pages + >> +endobj + +6 0 obj + << /Type /Catalog + /Pages 5 0 R + >> +endobj + +xref +0 7 +0000000000 65535 f +0000000010 00000 n +0000000034 00000 n +0000005115 00000 n +0000005138 00000 n +0000005311 00000 n +0000005385 00000 n +trailer +<< /ID [ (some) (id) ] + /Root 6 0 R + /Size 7 +>> +startxref +5444 +%%EOF \ No newline at end of file diff --git a/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/GifsTabIcon.imageset/ic_input_gifs.pdf b/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/GifsTabIcon.imageset/ic_input_gifs.pdf deleted file mode 100644 index 50f89933d7..0000000000 Binary files a/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/GifsTabIcon.imageset/ic_input_gifs.pdf and /dev/null differ diff --git a/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/RecentTabIcon.imageset/Contents.json b/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/RecentTabIcon.imageset/Contents.json index 8f506681e9..c35e65f2c0 100644 --- a/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/RecentTabIcon.imageset/Contents.json +++ b/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/RecentTabIcon.imageset/Contents.json @@ -1,7 +1,7 @@ { "images" : [ { - "filename" : "ic_input_recent.pdf", + "filename" : "recent_48.pdf", "idiom" : "universal" } ], diff --git a/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/RecentTabIcon.imageset/ic_input_recent.pdf b/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/RecentTabIcon.imageset/ic_input_recent.pdf deleted file mode 100644 index 7afd3b024f..0000000000 Binary files a/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/RecentTabIcon.imageset/ic_input_recent.pdf and /dev/null differ diff --git a/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/RecentTabIcon.imageset/recent_48.pdf b/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/RecentTabIcon.imageset/recent_48.pdf new file mode 100644 index 0000000000..07d586fff2 --- /dev/null +++ b/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/RecentTabIcon.imageset/recent_48.pdf @@ -0,0 +1,89 @@ +%PDF-1.7 + +1 0 obj + << >> +endobj + +2 0 obj + << /Length 3 0 R >> +stream +/DeviceRGB CS +/DeviceRGB cs +q +1.000000 0.000000 -0.000000 1.000000 4.271973 4.271973 cm +0.000000 0.000000 0.000000 scn +2.656000 19.728054 m +2.656000 29.156660 10.299395 36.800056 19.728001 36.800056 c +29.156605 36.800056 36.799999 29.156660 36.799999 19.728054 c +36.799999 10.299450 29.156605 2.656055 19.728001 2.656055 c +10.299395 2.656055 2.656000 10.299450 2.656000 19.728054 c +h +19.728001 39.456055 m +8.832526 39.456055 0.000000 30.623528 0.000000 19.728054 c +0.000000 8.832581 8.832526 0.000057 19.728001 0.000057 c +30.623474 0.000057 39.455997 8.832581 39.455997 19.728054 c +39.455997 30.623528 30.623474 39.456055 19.728001 39.456055 c +h +21.056000 30.928055 m +21.056000 31.661489 20.461435 32.256054 19.728001 32.256054 c +18.994566 32.256054 18.400002 31.661489 18.400002 30.928055 c +18.400002 20.440632 l +18.400002 19.610584 18.752302 18.819542 19.369272 18.264267 c +26.839615 11.540958 l +27.384773 11.050316 28.224453 11.094513 28.715096 11.639668 c +29.205738 12.184826 29.161543 13.024506 28.616386 13.515148 c +21.146042 20.238457 l +21.088728 20.290041 21.056000 20.363525 21.056000 20.440632 c +21.056000 30.928055 l +h +f* +n +Q + +endstream +endobj + +3 0 obj + 1137 +endobj + +4 0 obj + << /Annots [] + /Type /Page + /MediaBox [ 0.000000 0.000000 48.000000 48.000000 ] + /Resources 1 0 R + /Contents 2 0 R + /Parent 5 0 R + >> +endobj + +5 0 obj + << /Kids [ 4 0 R ] + /Count 1 + /Type /Pages + >> +endobj + +6 0 obj + << /Type /Catalog + /Pages 5 0 R + >> +endobj + +xref +0 7 +0000000000 65535 f +0000000010 00000 n +0000000034 00000 n +0000001227 00000 n +0000001250 00000 n +0000001423 00000 n +0000001497 00000 n +trailer +<< /ID [ (some) (id) ] + /Root 6 0 R + /Size 7 +>> +startxref +1556 +%%EOF \ No newline at end of file diff --git a/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/SavedStickersTabIcon.imageset/Contents.json b/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/SavedStickersTabIcon.imageset/Contents.json index e46f4e6129..eca3bfc65e 100644 --- a/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/SavedStickersTabIcon.imageset/Contents.json +++ b/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/SavedStickersTabIcon.imageset/Contents.json @@ -1,22 +1,12 @@ { "images" : [ { - "idiom" : "universal", - "scale" : "1x" - }, - { - "idiom" : "universal", - "filename" : "StickerKeyboardFavoriteTab@2x.png", - "scale" : "2x" - }, - { - "idiom" : "universal", - "filename" : "StickerKeyboardFavoriteTab@3x.png", - "scale" : "3x" + "filename" : "fave_48.pdf", + "idiom" : "universal" } ], "info" : { - "version" : 1, - "author" : "xcode" + "author" : "xcode", + "version" : 1 } -} \ No newline at end of file +} diff --git a/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/SavedStickersTabIcon.imageset/StickerKeyboardFavoriteTab@2x.png b/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/SavedStickersTabIcon.imageset/StickerKeyboardFavoriteTab@2x.png deleted file mode 100644 index 33cc76e6b3..0000000000 Binary files a/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/SavedStickersTabIcon.imageset/StickerKeyboardFavoriteTab@2x.png and /dev/null differ diff --git a/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/SavedStickersTabIcon.imageset/StickerKeyboardFavoriteTab@3x.png b/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/SavedStickersTabIcon.imageset/StickerKeyboardFavoriteTab@3x.png deleted file mode 100644 index 908cc7c207..0000000000 Binary files a/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/SavedStickersTabIcon.imageset/StickerKeyboardFavoriteTab@3x.png and /dev/null differ diff --git a/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/SavedStickersTabIcon.imageset/fave_48.pdf b/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/SavedStickersTabIcon.imageset/fave_48.pdf new file mode 100644 index 0000000000..f72b91cced --- /dev/null +++ b/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/SavedStickersTabIcon.imageset/fave_48.pdf @@ -0,0 +1,247 @@ +%PDF-1.7 + +1 0 obj + << >> +endobj + +2 0 obj + << /Length 3 0 R >> +stream +/DeviceRGB CS +/DeviceRGB cs +q +1.000000 0.000000 -0.000000 1.000000 5.000000 3.946289 cm +0.000000 0.000000 0.000000 scn +8.635828 2.820679 m +9.321689 1.681164 l +8.635828 2.820679 l +h +9.731453 16.567810 m +10.600920 17.574253 l +9.731453 16.567810 l +h +1.384685 25.091970 m +1.496809 23.766705 l +1.384685 25.091970 l +h +1.051567 24.066368 m +1.921034 25.072811 l +1.051567 24.066368 l +h +20.038393 37.786930 m +18.814356 37.266705 l +20.038393 37.786930 l +h +18.961609 37.786930 m +17.737572 38.307156 l +18.961609 37.786930 l +h +26.180216 26.059437 m +26.292339 27.384703 l +26.180216 26.059437 l +h +24.508167 27.270023 m +23.284132 26.749798 l +24.508167 27.270023 l +h +37.948433 24.066368 m +38.817898 23.059925 l +37.948433 24.066368 l +h +37.615314 25.091970 m +37.503193 23.766705 l +37.615314 25.091970 l +h +28.628592 14.598795 m +27.333555 14.295841 l +28.628592 14.598795 l +h +29.268547 16.567810 m +28.399080 17.574253 l +29.268547 16.567810 l +h +30.364174 2.820679 m +31.050034 3.960194 l +31.050034 3.960194 l +30.364174 2.820679 l +h +31.235470 3.455151 m +32.530506 3.758102 l +31.235470 3.455151 l +h +19.801676 9.178118 m +19.115814 8.038603 l +19.115814 8.038603 l +19.801676 9.178118 l +h +19.115814 8.038603 m +29.678312 1.681164 l +31.050034 3.960194 l +20.487535 10.317635 l +19.115814 8.038603 l +h +32.530506 3.758102 m +29.923628 14.901747 l +27.333555 14.295841 l +29.940432 3.152195 l +32.530506 3.758102 l +h +30.138014 15.561367 m +38.817898 23.059925 l +37.078964 25.072811 l +28.399080 17.574253 l +30.138014 15.561367 l +h +37.727440 26.417236 m +26.292339 27.384703 l +26.068092 24.734173 l +37.503193 23.766705 l +37.727440 26.417236 l +h +25.732204 27.790249 m +21.262428 38.307156 l +18.814356 37.266705 l +23.284132 26.749798 l +25.732204 27.790249 l +h +17.737572 38.307156 m +13.267798 27.790249 l +15.715871 26.749798 l +20.185644 37.266705 l +17.737572 38.307156 l +h +12.707662 27.384703 m +1.272561 26.417236 l +1.496809 23.766705 l +12.931910 24.734173 l +12.707662 27.384703 l +h +0.182100 23.059925 m +8.861986 15.561367 l +10.600920 17.574253 l +1.921034 25.072811 l +0.182100 23.059925 l +h +9.076371 14.901747 m +6.469495 3.758102 l +9.059568 3.152195 l +11.666444 14.295841 l +9.076371 14.901747 l +h +9.321689 1.681164 m +19.884186 8.038603 l +18.512465 10.317635 l +7.949968 3.960194 l +9.321689 1.681164 l +h +6.469495 3.758102 m +6.083770 2.109238 7.870839 0.807915 9.321689 1.681164 c +7.949968 3.960194 l +8.514397 4.299919 9.209628 3.793659 9.059568 3.152195 c +6.469495 3.758102 l +h +8.861986 15.561367 m +9.050550 15.398468 9.133131 15.144379 9.076371 14.901747 c +11.666444 14.295841 l +11.948550 15.501760 11.538106 16.764618 10.600920 17.574253 c +8.861986 15.561367 l +h +1.272561 26.417236 m +-0.416872 26.274302 -1.100905 24.168316 0.182100 23.059925 c +1.921034 25.072811 l +2.420168 24.641609 2.154054 23.822311 1.496809 23.766705 c +1.272561 26.417236 l +h +13.267798 27.790249 m +13.170667 27.561710 12.955100 27.405638 12.707662 27.384703 c +12.931910 24.734173 l +14.161719 24.838221 15.233116 25.613928 15.715871 26.749798 c +13.267798 27.790249 l +h +21.262428 38.307156 m +20.601709 39.861759 18.398293 39.861763 17.737572 38.307156 c +20.185644 37.266705 l +19.928600 36.661911 19.071398 36.661915 18.814356 37.266705 c +21.262428 38.307156 l +h +26.292339 27.384703 m +26.044901 27.405638 25.829334 27.561710 25.732204 27.790249 c +23.284132 26.749798 l +23.766886 25.613926 24.838282 24.838221 26.068092 24.734173 c +26.292339 27.384703 l +h +38.817898 23.059925 m +40.100903 24.168312 39.416878 26.274300 37.727440 26.417236 c +37.503193 23.766705 l +36.845943 23.822311 36.579834 24.641613 37.078964 25.072811 c +38.817898 23.059925 l +h +29.923628 14.901747 m +29.866869 15.144379 29.949450 15.398466 30.138014 15.561367 c +28.399080 17.574253 l +27.461895 16.764618 27.051451 15.501762 27.333555 14.295841 c +29.923628 14.901747 l +h +29.678312 1.681164 m +31.129168 0.807911 32.916229 2.109245 32.530506 3.758102 c +29.940432 3.152195 l +29.790373 3.793655 30.485600 4.299923 31.050034 3.960194 c +29.678312 1.681164 l +h +20.487535 10.317635 m +19.879963 10.683325 19.120041 10.683329 18.512465 10.317635 c +19.884186 8.038603 l +19.647816 7.896336 19.352180 7.896338 19.115814 8.038603 c +20.487535 10.317635 l +h +f +n +Q + +endstream +endobj + +3 0 obj + 4135 +endobj + +4 0 obj + << /Annots [] + /Type /Page + /MediaBox [ 0.000000 0.000000 48.000000 48.000000 ] + /Resources 1 0 R + /Contents 2 0 R + /Parent 5 0 R + >> +endobj + +5 0 obj + << /Kids [ 4 0 R ] + /Count 1 + /Type /Pages + >> +endobj + +6 0 obj + << /Type /Catalog + /Pages 5 0 R + >> +endobj + +xref +0 7 +0000000000 65535 f +0000000010 00000 n +0000000034 00000 n +0000004225 00000 n +0000004248 00000 n +0000004421 00000 n +0000004495 00000 n +trailer +<< /ID [ (some) (id) ] + /Root 6 0 R + /Size 7 +>> +startxref +4554 +%%EOF \ No newline at end of file diff --git a/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/SettingsIcon.imageset/Contents.json b/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/SettingsIcon.imageset/Contents.json index ef6daa8e54..651a30dd81 100644 --- a/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/SettingsIcon.imageset/Contents.json +++ b/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/SettingsIcon.imageset/Contents.json @@ -1,22 +1,12 @@ { "images" : [ { - "idiom" : "universal", - "scale" : "1x" - }, - { - "idiom" : "universal", - "filename" : "StickerKeyboardSettingsIcon@2x.png", - "scale" : "2x" - }, - { - "idiom" : "universal", - "filename" : "StickerKeyboardSettingsIcon@3x.png", - "scale" : "3x" + "filename" : "settings_48.pdf", + "idiom" : "universal" } ], "info" : { - "version" : 1, - "author" : "xcode" + "author" : "xcode", + "version" : 1 } -} \ No newline at end of file +} diff --git a/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/SettingsIcon.imageset/StickerKeyboardSettingsIcon@2x.png b/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/SettingsIcon.imageset/StickerKeyboardSettingsIcon@2x.png deleted file mode 100644 index 18dc7b95f8..0000000000 Binary files a/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/SettingsIcon.imageset/StickerKeyboardSettingsIcon@2x.png and /dev/null differ diff --git a/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/SettingsIcon.imageset/StickerKeyboardSettingsIcon@3x.png b/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/SettingsIcon.imageset/StickerKeyboardSettingsIcon@3x.png deleted file mode 100644 index 995d380cf1..0000000000 Binary files a/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/SettingsIcon.imageset/StickerKeyboardSettingsIcon@3x.png and /dev/null differ diff --git a/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/SettingsIcon.imageset/settings_48.pdf b/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/SettingsIcon.imageset/settings_48.pdf new file mode 100644 index 0000000000..f5d5321729 --- /dev/null +++ b/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/SettingsIcon.imageset/settings_48.pdf @@ -0,0 +1,198 @@ +%PDF-1.7 + +1 0 obj + << >> +endobj + +2 0 obj + << /Length 3 0 R >> +stream +/DeviceRGB CS +/DeviceRGB cs +q +1.000000 0.000000 -0.000000 1.000000 3.500000 3.500000 cm +0.000000 0.000000 0.000000 scn +22.000000 39.500000 m +22.000000 40.328426 21.328428 41.000000 20.500000 41.000000 c +19.671574 41.000000 19.000000 40.328426 19.000000 39.500000 c +19.000000 38.338337 l +19.000000 37.690460 18.579983 37.117363 17.962181 36.922268 c +17.088881 36.646984 l +16.504770 36.524204 15.932035 36.370529 15.372461 36.187752 c +14.486683 35.991013 l +13.854101 35.851067 13.203807 36.137375 12.879869 36.698452 c +12.299038 37.704483 l +11.884825 38.421921 10.967439 38.667736 10.250000 38.253521 c +9.532561 37.839306 9.286749 36.921921 9.700962 36.204483 c +10.281794 35.198452 l +10.605731 34.637375 10.528535 33.931049 10.091049 33.453190 c +9.444299 32.748505 l +9.026765 32.371395 8.628606 31.973236 8.251495 31.555702 c +7.546809 30.908951 l +7.068950 30.471466 6.362623 30.394268 5.801547 30.718206 c +4.795517 31.299038 l +4.078078 31.713251 3.160693 31.467438 2.746479 30.750000 c +2.332266 30.032562 2.578078 29.115175 3.295517 28.700962 c +4.301547 28.120131 l +4.862623 27.796192 5.148933 27.145899 5.008989 26.513317 c +4.812248 25.627539 l +4.629469 25.067965 4.475796 24.495230 4.353016 23.911119 c +4.077733 23.037819 l +3.882637 22.420017 3.309538 22.000000 2.661662 22.000000 c +1.500000 22.000000 l +0.671573 22.000000 0.000000 21.328426 0.000000 20.500000 c +0.000000 19.671572 0.671573 19.000000 1.500000 19.000000 c +2.661662 19.000000 l +3.309538 19.000000 3.882637 18.579983 4.077733 17.962181 c +4.353333 17.087372 l +4.475950 16.504307 4.629352 15.932577 4.811759 15.373960 c +5.008989 14.486683 l +5.148933 13.854101 4.862623 13.203808 4.301547 12.879869 c +3.295517 12.299038 l +2.578078 11.884825 2.332266 10.967440 2.746479 10.250000 c +3.160693 9.532560 4.078078 9.286747 4.795517 9.700962 c +5.801547 10.281792 l +6.362623 10.605730 7.068950 10.528536 7.546809 10.091049 c +8.250140 9.445797 l +8.627652 9.027718 9.026265 8.629059 9.444299 8.251495 c +10.091049 7.546806 l +10.528535 7.068951 10.605731 6.362625 10.281794 5.801548 c +9.700962 4.795517 l +9.286749 4.078079 9.532561 3.160690 10.250000 2.746479 c +10.967439 2.332264 11.884825 2.578079 12.299038 3.295517 c +12.879869 4.301548 l +13.203807 4.862625 13.854101 5.148933 14.486683 5.008987 c +15.384456 4.808334 l +15.943589 4.626175 16.515841 4.473072 17.099430 4.350803 c +17.962181 4.077732 l +18.125601 4.015381 l +18.652878 3.777821 19.000000 3.250641 19.000000 2.661663 c +19.000000 1.500000 l +19.010092 1.325066 l +19.096739 0.579060 19.730747 0.000000 20.500000 0.000000 c +21.328428 0.000000 22.000000 0.671574 22.000000 1.500000 c +22.000000 2.661663 l +22.010246 2.836273 l +22.078001 3.410614 22.476181 3.900372 23.037819 4.077732 c +23.905090 4.351749 l +24.486071 4.473644 25.055811 4.626099 25.612547 4.807358 c +26.513317 5.008987 l +27.145899 5.148933 27.796192 4.862625 28.120131 4.301548 c +28.700962 3.295517 l +29.115175 2.578079 30.032560 2.332264 30.750000 2.746479 c +31.467440 3.160690 31.713253 4.078079 31.299038 4.795517 c +30.718208 5.801548 l +30.394270 6.362625 30.471464 7.068951 30.908951 7.546806 c +31.555702 8.251495 l +31.973736 8.629059 32.372349 9.027718 32.749863 9.445797 c +33.453194 10.091049 l +33.931049 10.528536 34.637375 10.605730 35.198452 10.281792 c +36.204483 9.700962 l +36.921921 9.286747 37.839310 9.532560 38.253521 10.250000 c +38.667736 10.967440 38.421921 11.884825 37.704483 12.299038 c +36.698452 12.879869 l +36.137375 13.203808 35.851067 13.854101 35.991013 14.486683 c +36.192642 15.387453 l +36.373901 15.944189 36.526356 16.513929 36.648251 17.094910 c +36.922268 17.962181 l +37.117363 18.579983 37.690460 19.000000 38.338337 19.000000 c +39.500000 19.000000 l +40.328426 19.000000 41.000000 19.671572 41.000000 20.500000 c +41.000000 21.328426 40.328426 22.000000 39.500000 22.000000 c +38.338337 22.000000 l +37.690460 22.000000 37.117363 22.420017 36.922268 23.037819 c +36.648884 23.902077 l +36.526775 24.484623 36.373940 25.055870 36.192154 25.614044 c +35.991013 26.513317 l +35.851067 27.145899 36.137375 27.796192 36.698452 28.120131 c +37.704483 28.700962 l +38.421921 29.115175 38.667736 30.032562 38.253521 30.750000 c +37.839310 31.467438 36.921921 31.713251 36.204483 31.299038 c +35.198452 30.718206 l +34.637375 30.394268 33.931049 30.471466 33.453194 30.908951 c +32.748505 31.555702 l +32.370941 31.973736 31.972282 32.372349 31.554203 32.749859 c +30.908951 33.453190 l +30.471464 33.931049 30.394270 34.637375 30.718208 35.198452 c +31.299038 36.204483 l +31.713253 36.921921 31.467440 37.839306 30.750000 38.253521 c +30.032560 38.667736 29.115175 38.421921 28.700962 37.704483 c +28.120131 36.698452 l +27.796192 36.137375 27.145899 35.851067 26.513317 35.991013 c +25.626040 36.188240 l +25.067423 36.370647 24.495693 36.524048 23.912628 36.646667 c +23.037819 36.922268 l +22.420017 37.117363 22.000000 37.690460 22.000000 38.338337 c +22.000000 39.500000 l +h +6.999939 20.500244 m +6.999939 27.956089 13.044094 34.000244 20.499939 34.000244 c +27.955784 34.000244 33.999939 27.956089 33.999939 20.500244 c +33.999939 13.044399 27.955784 7.000244 20.499939 7.000244 c +13.044094 7.000244 6.999939 13.044399 6.999939 20.500244 c +h +14.233011 30.086567 m +14.833106 30.510162 15.662971 30.367085 16.086567 29.766989 c +21.689148 21.830000 l +30.500000 21.830000 l +31.234539 21.830000 31.830000 21.234539 31.830000 20.500000 c +31.830000 19.765461 31.234539 19.170000 30.500000 19.170000 c +21.689148 19.170000 l +16.086567 11.233011 l +15.662971 10.632917 14.833106 10.489836 14.233011 10.913433 c +13.632916 11.337029 13.489837 12.166895 13.913433 12.766989 c +19.372028 20.500000 l +13.913433 28.233011 l +13.489837 28.833107 13.632916 29.662971 14.233011 30.086567 c +h +f* +n +Q + +endstream +endobj + +3 0 obj + 5648 +endobj + +4 0 obj + << /Annots [] + /Type /Page + /MediaBox [ 0.000000 0.000000 48.000000 48.000000 ] + /Resources 1 0 R + /Contents 2 0 R + /Parent 5 0 R + >> +endobj + +5 0 obj + << /Kids [ 4 0 R ] + /Count 1 + /Type /Pages + >> +endobj + +6 0 obj + << /Type /Catalog + /Pages 5 0 R + >> +endobj + +xref +0 7 +0000000000 65535 f +0000000010 00000 n +0000000034 00000 n +0000005738 00000 n +0000005761 00000 n +0000005934 00000 n +0000006008 00000 n +trailer +<< /ID [ (some) (id) ] + /Root 6 0 R + /Size 7 +>> +startxref +6067 +%%EOF \ No newline at end of file diff --git a/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/StickersMode.imageset/Contents.json b/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/StickersMode.imageset/Contents.json index 06c3a823d3..636fda6a5f 100644 --- a/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/StickersMode.imageset/Contents.json +++ b/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/StickersMode.imageset/Contents.json @@ -1,7 +1,7 @@ { "images" : [ { - "filename" : "ic_input_stickers.pdf", + "filename" : "stickers_48.pdf", "idiom" : "universal" } ], diff --git a/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/StickersMode.imageset/ic_input_stickers.pdf b/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/StickersMode.imageset/ic_input_stickers.pdf deleted file mode 100644 index 67ae05a315..0000000000 Binary files a/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/StickersMode.imageset/ic_input_stickers.pdf and /dev/null differ diff --git a/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/StickersMode.imageset/stickers_48.pdf b/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/StickersMode.imageset/stickers_48.pdf new file mode 100644 index 0000000000..5679dac84f --- /dev/null +++ b/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/StickersMode.imageset/stickers_48.pdf @@ -0,0 +1,123 @@ +%PDF-1.7 + +1 0 obj + << >> +endobj + +2 0 obj + << /Length 3 0 R >> +stream +/DeviceRGB CS +/DeviceRGB cs +q +1.000000 0.000000 -0.000000 1.000000 4.270020 4.152344 cm +0.000000 0.000000 0.000000 scn +16.315697 39.500134 m +17.465136 39.695385 18.643398 39.519531 19.692223 38.997250 c +20.036819 38.810360 l +20.329382 38.633312 l +22.423059 37.333458 25.297297 34.879963 28.991110 31.253437 c +30.068821 30.185352 l +30.611883 29.639896 l +34.713905 25.501024 37.402637 22.349218 38.705769 20.126995 c +39.294643 19.122784 39.547707 17.960588 39.433071 16.802202 c +39.381195 16.416437 l +39.289803 15.914349 l +39.216812 15.566687 l +39.100006 15.079699 l +36.891888 6.359375 29.005989 0.117638 19.853556 0.117638 c +8.888740 0.117638 0.000000 9.006048 0.000000 19.970463 c +0.000000 29.125599 6.246058 37.013073 14.970581 39.218063 c +15.710625 39.388660 l +16.315697 39.500134 l +h +12.798756 35.489426 m +12.631100 35.425148 l +12.241472 35.242031 l +6.578289 32.429054 2.786009 26.584171 2.786009 19.970726 c +2.786009 10.544853 10.427470 2.903671 19.853691 2.903671 c +26.466494 2.903671 32.311123 6.694832 35.134140 12.353510 c +35.125557 12.358789 l +35.308681 12.748402 l +35.384480 12.909666 35.423779 13.085659 35.423779 13.263847 c +35.423779 13.877327 34.967880 14.384329 34.376385 14.464569 c +34.211948 14.475632 l +32.160770 14.475632 l +22.489969 14.475632 14.620218 22.186560 14.364793 31.795357 c +14.358393 32.277351 l +14.358393 34.328457 l +14.358393 34.506645 14.319095 34.682640 14.243299 34.843903 c +13.984495 35.394527 13.364433 35.659653 12.798756 35.489426 c +h +16.782263 36.753235 m +17.411953 36.860195 18.059189 36.741272 18.609720 36.417446 c +18.873783 36.257626 l +19.147327 36.083416 l +21.103546 34.807701 23.928543 32.350906 27.572746 28.738895 c +28.098915 28.215038 l +29.130342 27.174446 l +32.797047 23.440453 35.195877 20.604664 36.302593 18.717381 c +36.625195 18.167248 36.743385 17.520950 36.636360 16.892254 c +36.563797 16.495956 l +35.903824 16.976896 35.090961 17.260666 34.211819 17.260666 c +32.160641 17.260666 l +31.717884 17.267069 l +23.629288 17.501270 17.144138 24.131626 17.144138 32.276615 c +17.144138 34.327721 l +17.128656 34.679214 l +17.087467 35.145836 16.964489 35.602531 16.764452 36.028126 c +16.655125 36.260727 16.526255 36.477886 16.380722 36.678566 c +16.574390 36.716927 l +16.782263 36.753235 l +h +f* +n +Q + +endstream +endobj + +3 0 obj + 2244 +endobj + +4 0 obj + << /Annots [] + /Type /Page + /MediaBox [ 0.000000 0.000000 48.000000 48.000000 ] + /Resources 1 0 R + /Contents 2 0 R + /Parent 5 0 R + >> +endobj + +5 0 obj + << /Kids [ 4 0 R ] + /Count 1 + /Type /Pages + >> +endobj + +6 0 obj + << /Type /Catalog + /Pages 5 0 R + >> +endobj + +xref +0 7 +0000000000 65535 f +0000000010 00000 n +0000000034 00000 n +0000002334 00000 n +0000002357 00000 n +0000002530 00000 n +0000002604 00000 n +trailer +<< /ID [ (some) (id) ] + /Root 6 0 R + /Size 7 +>> +startxref +2663 +%%EOF \ No newline at end of file diff --git a/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/TrendingGifs.imageset/Contents.json b/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/TrendingGifs.imageset/Contents.json index 7e3c34b404..db24d83a9c 100644 --- a/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/TrendingGifs.imageset/Contents.json +++ b/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/TrendingGifs.imageset/Contents.json @@ -1,7 +1,7 @@ { "images" : [ { - "filename" : "ic_input_trending.pdf", + "filename" : "trending_48.pdf", "idiom" : "universal" } ], diff --git a/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/TrendingGifs.imageset/ic_input_trending.pdf b/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/TrendingGifs.imageset/ic_input_trending.pdf deleted file mode 100644 index 79a53a462c..0000000000 Binary files a/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/TrendingGifs.imageset/ic_input_trending.pdf and /dev/null differ diff --git a/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/TrendingGifs.imageset/trending_48.pdf b/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/TrendingGifs.imageset/trending_48.pdf new file mode 100644 index 0000000000..a456c3f12a --- /dev/null +++ b/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/TrendingGifs.imageset/trending_48.pdf @@ -0,0 +1,110 @@ +%PDF-1.7 + +1 0 obj + << >> +endobj + +2 0 obj + << /Length 3 0 R >> +stream +/DeviceRGB CS +/DeviceRGB cs +q +1.000000 0.000000 -0.000000 1.000000 4.170044 0.499023 cm +0.000000 0.000000 0.000000 scn +32.698776 36.649349 m +33.196007 37.230061 33.128334 38.103909 32.547619 38.601139 c +24.752439 45.275715 13.077241 44.850506 5.778737 37.552002 c +-1.926246 29.847019 -1.926246 17.354773 5.778737 9.649792 c +13.483720 1.944809 25.975967 1.944809 33.680950 9.649792 c +35.733494 11.702333 37.280899 14.138113 38.257706 16.806875 c +38.402122 17.201443 38.533802 17.600437 38.652599 18.003250 c +38.868858 18.736530 38.449730 19.506285 37.716450 19.722542 c +36.983170 19.938799 36.213417 19.519670 35.997158 18.786390 c +35.895077 18.440252 35.781937 18.097435 35.657864 17.758453 c +34.818737 15.465839 33.489719 13.373833 31.723314 11.607428 c +25.099504 4.983616 14.360184 4.983616 7.736373 11.607428 c +1.112563 18.231237 1.112563 28.970556 7.736373 35.594368 c +14.010414 41.868408 24.048201 42.233982 30.746983 36.498192 c +31.327696 36.000961 32.201546 36.068634 32.698776 36.649349 c +h +38.615009 32.391445 m +38.529594 33.073990 37.947231 33.602066 37.241535 33.602066 c +28.902636 33.602066 l +28.728996 33.591278 l +28.046450 33.505859 27.518377 32.923504 27.518377 32.217808 c +27.529161 32.044167 l +27.614580 31.361622 28.196938 30.833549 28.902636 30.833549 c +34.177799 30.834362 l +25.567074 22.223354 l +20.660971 27.129120 l +20.471394 27.300470 l +19.490988 28.100105 18.044804 28.042988 17.130936 27.129120 c +8.744342 18.742527 l +8.620458 18.600773 l +8.207510 18.058197 8.248805 17.280428 8.744342 16.784891 c +8.886098 16.661007 l +9.428673 16.248058 10.206441 16.289354 10.701978 16.784891 c +18.894285 24.980196 l +23.802057 20.072762 l +23.991632 19.901411 l +24.972040 19.101778 26.418222 19.158894 27.332090 20.072762 c +35.857254 28.599537 l +35.857281 23.878904 l +35.868065 23.705265 l +35.953484 23.022720 36.535839 22.494646 37.241535 22.494646 c +38.006042 22.494646 38.625793 23.114401 38.625793 23.878904 c +38.625793 32.217808 l +38.615009 32.391445 l +h +f* +n +Q + +endstream +endobj + +3 0 obj + 1977 +endobj + +4 0 obj + << /Annots [] + /Type /Page + /MediaBox [ 0.000000 0.000000 48.000000 48.000000 ] + /Resources 1 0 R + /Contents 2 0 R + /Parent 5 0 R + >> +endobj + +5 0 obj + << /Kids [ 4 0 R ] + /Count 1 + /Type /Pages + >> +endobj + +6 0 obj + << /Type /Catalog + /Pages 5 0 R + >> +endobj + +xref +0 7 +0000000000 65535 f +0000000010 00000 n +0000000034 00000 n +0000002067 00000 n +0000002090 00000 n +0000002263 00000 n +0000002337 00000 n +trailer +<< /ID [ (some) (id) ] + /Root 6 0 R + /Size 7 +>> +startxref +2396 +%%EOF \ No newline at end of file diff --git a/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/TrendingIcon.imageset/Contents.json b/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/TrendingIcon.imageset/Contents.json index 52c50ded21..6ce76d9c8a 100644 --- a/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/TrendingIcon.imageset/Contents.json +++ b/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/TrendingIcon.imageset/Contents.json @@ -1,7 +1,7 @@ { "images" : [ { - "filename" : "ic_input_addstickers.pdf", + "filename" : "add_48.pdf", "idiom" : "universal" } ], diff --git a/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/TrendingIcon.imageset/add_48.pdf b/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/TrendingIcon.imageset/add_48.pdf new file mode 100644 index 0000000000..d33ac42f34 --- /dev/null +++ b/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/TrendingIcon.imageset/add_48.pdf @@ -0,0 +1,95 @@ +%PDF-1.7 + +1 0 obj + << >> +endobj + +2 0 obj + << /Length 3 0 R >> +stream +/DeviceRGB CS +/DeviceRGB cs +q +1.000000 0.000000 -0.000000 1.000000 4.272095 4.271973 cm +0.000000 0.000000 0.000000 scn +19.728001 36.800056 m +10.299395 36.800056 2.656000 29.156660 2.656000 19.728054 c +2.656000 10.299450 10.299395 2.656055 19.728001 2.656055 c +29.156605 2.656055 36.799999 10.299450 36.799999 19.728054 c +36.799999 29.156660 29.156605 36.800056 19.728001 36.800056 c +h +0.000000 19.728054 m +0.000000 30.623528 8.832526 39.456055 19.728001 39.456055 c +30.623474 39.456055 39.455997 30.623528 39.455997 19.728054 c +39.455997 8.832581 30.623474 0.000057 19.728001 0.000057 c +8.832526 0.000057 0.000000 8.832581 0.000000 19.728054 c +h +19.728001 29.056055 m +20.461435 29.056055 21.056002 28.461489 21.056002 27.728054 c +21.056002 21.056053 l +27.728001 21.056053 l +28.461435 21.056053 29.056002 20.461487 29.056002 19.728054 c +29.056002 18.994619 28.461435 18.400053 27.728001 18.400053 c +21.056002 18.400053 l +21.056002 11.728054 l +21.056002 10.994619 20.461435 10.400053 19.728001 10.400053 c +18.994568 10.400053 18.400002 10.994619 18.400002 11.728054 c +18.400002 18.400053 l +11.728000 18.400053 l +10.994566 18.400053 10.400000 18.994619 10.400000 19.728054 c +10.400000 20.461487 10.994566 21.056053 11.728000 21.056053 c +18.400002 21.056053 l +18.400002 27.728054 l +18.400002 28.461489 18.994568 29.056055 19.728001 29.056055 c +h +f* +n +Q + +endstream +endobj + +3 0 obj + 1349 +endobj + +4 0 obj + << /Annots [] + /Type /Page + /MediaBox [ 0.000000 0.000000 48.000000 48.000000 ] + /Resources 1 0 R + /Contents 2 0 R + /Parent 5 0 R + >> +endobj + +5 0 obj + << /Kids [ 4 0 R ] + /Count 1 + /Type /Pages + >> +endobj + +6 0 obj + << /Type /Catalog + /Pages 5 0 R + >> +endobj + +xref +0 7 +0000000000 65535 f +0000000010 00000 n +0000000034 00000 n +0000001439 00000 n +0000001462 00000 n +0000001635 00000 n +0000001709 00000 n +trailer +<< /ID [ (some) (id) ] + /Root 6 0 R + /Size 7 +>> +startxref +1768 +%%EOF \ No newline at end of file diff --git a/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/TrendingIcon.imageset/ic_input_addstickers.pdf b/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/TrendingIcon.imageset/ic_input_addstickers.pdf deleted file mode 100644 index 4e0a98ec48..0000000000 Binary files a/submodules/TelegramUI/Images.xcassets/Chat/Input/Media/TrendingIcon.imageset/ic_input_addstickers.pdf and /dev/null differ diff --git a/submodules/TelegramUI/Sources/ChatController.swift b/submodules/TelegramUI/Sources/ChatController.swift index dea9f80eef..9f8147d3a0 100644 --- a/submodules/TelegramUI/Sources/ChatController.swift +++ b/submodules/TelegramUI/Sources/ChatController.swift @@ -3063,7 +3063,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G return message?.totalCount } |> distinctUntilChanged - } else if case let .forwardedMessages(messageIds, hideNames, _) = subject { + } else if case let .forwardedMessages(messageIds, options) = subject { displayedCountSignal = self.presentationInterfaceStatePromise.get() |> map { state -> Int? in if let selectionState = state.interfaceState.selectionState { @@ -3074,19 +3074,19 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G } |> distinctUntilChanged - subtitleTextSignal = combineLatest(self.presentationInterfaceStatePromise.get(), hideNames, displayedCountSignal) - |> map { state, hideNames, count in + subtitleTextSignal = combineLatest(self.presentationInterfaceStatePromise.get(), options, displayedCountSignal) + |> map { state, options, count in if let peer = state.renderedPeer?.chatMainPeer { if let peer = peer as? TelegramUser { let displayName = peer.compactDisplayTitle if count == 1 { - if hideNames { + if options.hideNames { return state.strings.Conversation_ForwardOptions_UserMessageForwardHidden(displayName).string } else { return state.strings.Conversation_ForwardOptions_UserMessageForwardVisible(displayName).string } } else { - if hideNames { + if options.hideNames { return state.strings.Conversation_ForwardOptions_UserMessagesForwardHidden(displayName).string } else { return state.strings.Conversation_ForwardOptions_UserMessagesForwardVisible(displayName).string @@ -3094,13 +3094,13 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G } } else if let peer = peer as? TelegramChannel, case .broadcast = peer.info { if count == 1 { - if hideNames { + if options.hideNames { return state.strings.Conversation_ForwardOptions_ChannelMessageForwardHidden } else { return state.strings.Conversation_ForwardOptions_ChannelMessageForwardVisible } } else { - if hideNames { + if options.hideNames { return state.strings.Conversation_ForwardOptions_ChannelMessagesForwardHidden } else { return state.strings.Conversation_ForwardOptions_ChannelMessagesForwardVisible @@ -3108,13 +3108,13 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G } } else { if count == 1 { - if hideNames { + if options.hideNames { return state.strings.Conversation_ForwardOptions_GroupMessageForwardHidden } else { return state.strings.Conversation_ForwardOptions_GroupMessageForwardVisible } } else { - if hideNames { + if options.hideNames { return state.strings.Conversation_ForwardOptions_GroupMessagesForwardHidden } else { return state.strings.Conversation_ForwardOptions_GroupMessagesForwardVisible @@ -3894,7 +3894,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G isDarkAppearance = darkAppearancePreview } let customTheme = isDarkAppearance ? theme.darkTheme : theme.theme - if let settings = customTheme.settings, let theme = makePresentationTheme(settings: settings) { + if let settings = customTheme.settings, let theme = makePresentationTheme(settings: settings, specialMode: true) { presentationData = presentationData.withUpdated(theme: theme) presentationData = presentationData.withUpdated(chatWallpaper: theme.chat.defaultWallpaper) } @@ -4648,7 +4648,9 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G if let strongSelf = self { let (cachedData, messages) = cachedDataAndMessages - strongSelf.cachedDataPromise.set(.single(cachedData)) + if cachedData != nil { + strongSelf.cachedDataPromise.set(.single(cachedData)) + } var pinnedMessageId: MessageId? var peerIsBlocked: Bool = false @@ -5484,71 +5486,47 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G if let strongSelf = self, case let .peer(peerId) = strongSelf.chatLocation { let presentationData = strongSelf.presentationData - let hideNames = strongSelf.presentationInterfaceStatePromise.get() - |> map { state -> Bool in - return state.interfaceState.forwardOptionsState?.hideNames ?? false + let forwardOptions: Signal + if peerId.namespace == Namespaces.Peer.SecretChat { + forwardOptions = .single(ChatControllerSubject.ForwardOptions(hideNames: true, hideCaptions: false)) + } else { + forwardOptions = strongSelf.presentationInterfaceStatePromise.get() + |> map { state -> ChatControllerSubject.ForwardOptions in + return ChatControllerSubject.ForwardOptions(hideNames: state.interfaceState.forwardOptionsState?.hideNames ?? false, hideCaptions: state.interfaceState.forwardOptionsState?.hideCaptions ?? false) + } + |> distinctUntilChanged } - |> distinctUntilChanged - let hideCaptions = strongSelf.presentationInterfaceStatePromise.get() - |> map { state -> Bool in - return state.interfaceState.forwardOptionsState?.hideCaptions ?? false - } - |> distinctUntilChanged - - let chatController = strongSelf.context.sharedContext.makeChatController(context: strongSelf.context, chatLocation: .peer(peerId), subject: .forwardedMessages(ids: strongSelf.presentationInterfaceState.interfaceState.forwardMessageIds ?? [], hideNames: hideNames, hideCaptions: hideCaptions), botStart: nil, mode: .standard(previewing: true)) + let chatController = strongSelf.context.sharedContext.makeChatController(context: strongSelf.context, chatLocation: .peer(peerId), subject: .forwardedMessages(ids: strongSelf.presentationInterfaceState.interfaceState.forwardMessageIds ?? [], options: forwardOptions), botStart: nil, mode: .standard(previewing: true)) chatController.canReadHistory.set(false) - let items = combineLatest(strongSelf.presentationInterfaceStatePromise.get(), strongSelf.context.account.postbox.messagesAtIds(strongSelf.presentationInterfaceState.interfaceState.forwardMessageIds ?? [])) - |> map { presentationInterfaceState, messages -> [ContextMenuItem] in + let items = combineLatest(forwardOptions, strongSelf.context.account.postbox.messagesAtIds(strongSelf.presentationInterfaceState.interfaceState.forwardMessageIds ?? [])) + |> map { forwardOptions, messages -> [ContextMenuItem] in var items: [ContextMenuItem] = [] var hasCaptions = false - loop: for message in messages { + var uniquePeerIds = Set() + for message in messages { + if let author = message.effectiveAuthor, !uniquePeerIds.contains(author.id) { + uniquePeerIds.insert(author.id) + } if !message.text.isEmpty { for media in message.media { if media is TelegramMediaImage || media is TelegramMediaFile { hasCaptions = true - break loop } } } } - items.append(.action(ContextMenuActionItem(text: presentationData.strings.Conversation_ForwardOptions_ShowSendersNames, icon: { theme in - if presentationInterfaceState.interfaceState.forwardOptionsState?.hideNames == true { - return nil - } else { - return generateTintedImage(image: UIImage(bundleImageName: "Chat/Context Menu/Check"), color: theme.contextMenu.primaryColor) - } - }, action: { [weak self] _, f in - self?.interfaceInteraction?.updateForwardOptionsState({ current in - var updated = current - updated.hideNames = false - updated.hideCaptions = false - return updated - }) - }))) + let hideNames = forwardOptions.hideNames + let hideCaptions = forwardOptions.hideCaptions - items.append(.action(ContextMenuActionItem(text: presentationData.strings.Conversation_ForwardOptions_HideSendersNames, icon: { theme in - if presentationInterfaceState.interfaceState.forwardOptionsState?.hideNames == true { - return generateTintedImage(image: UIImage(bundleImageName: "Chat/Context Menu/Check"), color: theme.contextMenu.primaryColor) - } else { - return nil - } - }, action: { _, f in - self?.interfaceInteraction?.updateForwardOptionsState({ current in - var updated = current - updated.hideNames = true - return updated - }) - }))) + if case let .peer(peerId) = strongSelf.chatLocation, peerId.namespace == Namespaces.Peer.SecretChat { - if hasCaptions { - items.append(.separator) - - items.append(.action(ContextMenuActionItem(text: presentationData.strings.Conversation_ForwardOptions_ShowCaption, icon: { theme in - if presentationInterfaceState.interfaceState.forwardOptionsState?.hideCaptions == true { + } else { + items.append(.action(ContextMenuActionItem(text: uniquePeerIds.count == 1 ? presentationData.strings.Conversation_ForwardOptions_ShowSendersName : presentationData.strings.Conversation_ForwardOptions_ShowSendersNames, icon: { theme in + if hideNames { return nil } else { return generateTintedImage(image: UIImage(bundleImageName: "Chat/Context Menu/Check"), color: theme.contextMenu.primaryColor) @@ -5556,14 +5534,14 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G }, action: { [weak self] _, f in self?.interfaceInteraction?.updateForwardOptionsState({ current in var updated = current + updated.hideNames = false updated.hideCaptions = false - return updated }) }))) - items.append(.action(ContextMenuActionItem(text: presentationData.strings.Conversation_ForwardOptions_HideCaption, icon: { theme in - if presentationInterfaceState.interfaceState.forwardOptionsState?.hideCaptions == true { + items.append(.action(ContextMenuActionItem(text: uniquePeerIds.count == 1 ? presentationData.strings.Conversation_ForwardOptions_HideSendersName : presentationData.strings.Conversation_ForwardOptions_HideSendersNames, icon: { theme in + if hideNames { return generateTintedImage(image: UIImage(bundleImageName: "Chat/Context Menu/Check"), color: theme.contextMenu.primaryColor) } else { return nil @@ -5571,14 +5549,47 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G }, action: { _, f in self?.interfaceInteraction?.updateForwardOptionsState({ current in var updated = current - updated.hideCaptions = true updated.hideNames = true return updated }) }))) - } - items.append(.separator) + if hasCaptions { + items.append(.separator) + + items.append(.action(ContextMenuActionItem(text: presentationData.strings.Conversation_ForwardOptions_ShowCaption, icon: { theme in + if hideCaptions { + return nil + } else { + return generateTintedImage(image: UIImage(bundleImageName: "Chat/Context Menu/Check"), color: theme.contextMenu.primaryColor) + } + }, action: { [weak self] _, f in + self?.interfaceInteraction?.updateForwardOptionsState({ current in + var updated = current + updated.hideCaptions = false + + return updated + }) + }))) + + items.append(.action(ContextMenuActionItem(text: presentationData.strings.Conversation_ForwardOptions_HideCaption, icon: { theme in + if hideCaptions { + return generateTintedImage(image: UIImage(bundleImageName: "Chat/Context Menu/Check"), color: theme.contextMenu.primaryColor) + } else { + return nil + } + }, action: { _, f in + self?.interfaceInteraction?.updateForwardOptionsState({ current in + var updated = current + updated.hideCaptions = true + updated.hideNames = true + return updated + }) + }))) + } + + items.append(.separator) + } items.append(.action(ContextMenuActionItem(text: presentationData.strings.Conversation_ForwardOptions_ChangeRecipient, icon: { theme in return generateTintedImage(image: UIImage(bundleImageName: "Chat/Context Menu/Forward"), color: theme.contextMenu.primaryColor) }, action: { c, f in self?.interfaceInteraction?.forwardCurrentForwardMessages() @@ -5605,6 +5616,13 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G } let contextController = ContextController(account: strongSelf.context.account, presentationData: strongSelf.presentationData, source: .controller(ContextControllerContentSourceImpl(controller: chatController, sourceNode: sourceNode, passthroughTouches: true)), items: items, reactionItems: []) + contextController.dismissedForCancel = { [weak self, weak chatController] in + if let selectedMessageIds = (chatController as? ChatControllerImpl)?.selectedMessageIds { + var forwardMessageIds = strongSelf.presentationInterfaceState.interfaceState.forwardMessageIds ?? [] + forwardMessageIds = forwardMessageIds.filter { selectedMessageIds.contains($0) } + strongSelf.updateChatPresentationInterfaceState(interactive: false, { $0.updatedInterfaceState({ $0.withUpdatedForwardMessageIds(forwardMessageIds) }) }) + } + } contextController.immediateItemsTransitionAnimation = true strongSelf.presentInGlobalOverlay(contextController) } @@ -7423,7 +7441,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G } } - if case let .forwardedMessages(messageIds, _, _) = self.subject, messageIds.count > 1 { + if case let .forwardedMessages(messageIds, _) = self.subject, messageIds.count > 1 { self.updateChatPresentationInterfaceState(interactive: false, { state in return state.updatedInterfaceState({ $0.withUpdatedSelectedMessages(messageIds) }) }) diff --git a/submodules/TelegramUI/Sources/ChatControllerNode.swift b/submodules/TelegramUI/Sources/ChatControllerNode.swift index 7362cdc100..0fa6e44650 100644 --- a/submodules/TelegramUI/Sources/ChatControllerNode.swift +++ b/submodules/TelegramUI/Sources/ChatControllerNode.swift @@ -252,54 +252,66 @@ class ChatControllerNode: ASDisplayNode, UIScrollViewDelegate { self.inputContextPanelContainer = ChatControllerTitlePanelNodeContainer() var source: ChatHistoryListSource - if case let .forwardedMessages(messageIds, hideNames, hideCaptions) = subject { - let messages = combineLatest(context.account.postbox.messagesAtIds(messageIds), context.account.postbox.loadedPeerWithId(context.account.peerId)) - |> mapToSignal { messages, accountPeer -> Signal<([Message], Int32, Bool), NoError> in - return combineLatest(hideNames, hideCaptions) - |> map { hideNames, hideCaptions -> ([Message], Int32, Bool) in - var messages = messages - messages.sort(by: { lhsMessage, rhsMessage in - return lhsMessage.timestamp > rhsMessage.timestamp + if case let .forwardedMessages(messageIds, options) = subject { + let messages = combineLatest(context.account.postbox.messagesAtIds(messageIds), context.account.postbox.loadedPeerWithId(context.account.peerId), options) + |> map { messages, accountPeer, options -> ([Message], Int32, Bool) in + var messages = messages + messages.sort(by: { lhsMessage, rhsMessage in + return lhsMessage.timestamp > rhsMessage.timestamp + }) + messages = messages.map { message in + var flags = message.flags + flags.remove(.Incoming) + + var attributes = message.attributes + attributes.append(OutgoingScheduleInfoMessageAttribute(scheduleTime: scheduleWhenOnlineTimestamp)) + attributes = attributes.filter({ attribute in + if attribute is EditedMessageAttribute { + return false + } + if attribute is ReplyMessageAttribute { + return false + } + if attribute is ReplyMarkupMessageAttribute { + return false + } + return true }) - messages = messages.map { message in - var flags = message.flags - flags.remove(.Incoming) - - var attributes = message.attributes - attributes.append(OutgoingScheduleInfoMessageAttribute(scheduleTime: scheduleWhenOnlineTimestamp)) - attributes = attributes.filter({ attribute in - if attribute is EditedMessageAttribute { - return false - } - if attribute is ReplyMessageAttribute { - return false - } - return true - }) - - var messageText = message.text - var forwardInfo = message.forwardInfo - if forwardInfo == nil { - forwardInfo = MessageForwardInfo(author: message.author, source: nil, sourceMessageId: nil, date: 0, authorSignature: nil, psaType: nil, flags: []) - } - if hideNames { - forwardInfo = nil - } - - if hideNames && hideCaptions { - for media in message.media { + + var messageText = message.text + var messageMedia = message.media + var hasDice = false + if options.hideNames { + for media in message.media { + if options.hideCaptions { if media is TelegramMediaImage || media is TelegramMediaFile { messageText = "" break } } + if let poll = media as? TelegramMediaPoll { + var updatedMedia = message.media.filter { !($0 is TelegramMediaPoll) } + updatedMedia.append(TelegramMediaPoll(pollId: poll.pollId, publicity: poll.publicity, kind: poll.kind, text: poll.text, options: poll.options, correctAnswers: poll.correctAnswers, results: TelegramMediaPollResults(voters: nil, totalVoters: nil, recentVoters: [], solution: nil), isClosed: false, deadlineTimeout: nil)) + messageMedia = updatedMedia + } + if let _ = media as? TelegramMediaDice { + hasDice = true + } } - - return message.withUpdatedFlags(flags).withUpdatedText(messageText).withUpdatedTimestamp(scheduleWhenOnlineTimestamp).withUpdatedAttributes(attributes).withUpdatedAuthor(accountPeer).withUpdatedForwardInfo(forwardInfo) } - return (messages, Int32(messages.count), false) + var forwardInfo = message.forwardInfo + if forwardInfo == nil { + forwardInfo = MessageForwardInfo(author: message.author, source: nil, sourceMessageId: nil, date: 0, authorSignature: nil, psaType: nil, flags: []) + } + if options.hideNames && !hasDice { + forwardInfo = nil + } + + return message.withUpdatedFlags(flags).withUpdatedText(messageText).withUpdatedMedia(messageMedia).withUpdatedTimestamp(scheduleWhenOnlineTimestamp).withUpdatedAttributes(attributes).withUpdatedAuthor(accountPeer).withUpdatedForwardInfo(forwardInfo) } + + return (messages, Int32(messages.count), false) } source = .custom(messages: messages, messageId: MessageId(peerId: PeerId(0), namespace: 0, id: 0), loadMore: nil) } else { @@ -556,6 +568,15 @@ class ChatControllerNode: ASDisplayNode, UIScrollViewDelegate { if let _ = strongSelf.chatPresentationInterfaceState.inputTextPanelState.mediaRecordingState { return true } + var hasChatThemeScreen = false + strongSelf.controller?.window?.forEachController { c in + if c is ChatThemeScreen { + hasChatThemeScreen = true + } + } + if hasChatThemeScreen { + return true + } return false } diff --git a/submodules/TelegramUI/Sources/ChatHistoryListNode.swift b/submodules/TelegramUI/Sources/ChatHistoryListNode.swift index 86bfc48b28..293b049bf9 100644 --- a/submodules/TelegramUI/Sources/ChatHistoryListNode.swift +++ b/submodules/TelegramUI/Sources/ChatHistoryListNode.swift @@ -2471,7 +2471,14 @@ public final class ChatHistoryListNode: ListView, ChatHistoryNode { updatedToggledMessageIds = state.toggledMessageIds let isSelected = (self.controllerInteraction.selectionState?.selectedIds.contains(message.id) ?? false) if state.selecting != isSelected { - let messageIds = messages.map { $0.id } + let messageIds = messages.filter { message -> Bool in + for media in messages { + if media is TelegramMediaAction { + return false + } + } + return true + }.map { $0.id } updatedToggledMessageIds.append(messageIds) self.controllerInteraction.toggleMessagesSelection(messageIds, state.selecting) } diff --git a/submodules/TelegramUI/Sources/ChatMediaInputMetaSectionItemNode.swift b/submodules/TelegramUI/Sources/ChatMediaInputMetaSectionItemNode.swift index f3210da8b5..fe0d876116 100644 --- a/submodules/TelegramUI/Sources/ChatMediaInputMetaSectionItemNode.swift +++ b/submodules/TelegramUI/Sources/ChatMediaInputMetaSectionItemNode.swift @@ -129,6 +129,7 @@ final class ChatMediaInputMetaSectionItemNode: ListViewItemNode { self.imageNode = ASImageNode() self.imageNode.isLayerBacked = true + self.imageNode.contentMode = .scaleAspectFit self.textNodeContainer = ASDisplayNode() self.textNodeContainer.isUserInteractionEnabled = false @@ -227,12 +228,6 @@ final class ChatMediaInputMetaSectionItemNode: ListViewItemNode { default: break } -// if emoji == "🥳" { -// if #available(iOSApplicationExtension 12.1, iOS 12.1, *) { -// } else { -// emoji = "🎉" -// } -// } self.imageNode.image = nil if let file = file { diff --git a/submodules/TelegramUI/Sources/ChatMediaInputRecentGifsItem.swift b/submodules/TelegramUI/Sources/ChatMediaInputRecentGifsItem.swift index 9520e80399..cfb9ccaa7f 100644 --- a/submodules/TelegramUI/Sources/ChatMediaInputRecentGifsItem.swift +++ b/submodules/TelegramUI/Sources/ChatMediaInputRecentGifsItem.swift @@ -86,6 +86,7 @@ final class ChatMediaInputRecentGifsItemNode: ListViewItemNode { self.imageNode = ASImageNode() self.imageNode.isLayerBacked = true + self.imageNode.contentMode = .scaleAspectFit self.titleNode = ImmediateTextNode() diff --git a/submodules/TelegramUI/Sources/ChatMediaInputSettingsItem.swift b/submodules/TelegramUI/Sources/ChatMediaInputSettingsItem.swift index 0480a8c0bc..77a0c95c80 100644 --- a/submodules/TelegramUI/Sources/ChatMediaInputSettingsItem.swift +++ b/submodules/TelegramUI/Sources/ChatMediaInputSettingsItem.swift @@ -82,6 +82,7 @@ final class ChatMediaInputSettingsItemNode: ListViewItemNode { self.imageNode = ASImageNode() self.imageNode.isLayerBacked = true + self.imageNode.contentMode = .scaleAspectFit self.titleNode = ImmediateTextNode() diff --git a/submodules/TelegramUI/Sources/ChatMediaInputTrendingItem.swift b/submodules/TelegramUI/Sources/ChatMediaInputTrendingItem.swift index f27923b5c8..ad8158ce84 100644 --- a/submodules/TelegramUI/Sources/ChatMediaInputTrendingItem.swift +++ b/submodules/TelegramUI/Sources/ChatMediaInputTrendingItem.swift @@ -91,6 +91,7 @@ final class ChatMediaInputTrendingItemNode: ListViewItemNode { self.imageNode = ASImageNode() self.imageNode.isLayerBacked = true + self.imageNode.contentMode = .scaleAspectFit self.badgeBackground = ASImageNode() self.badgeBackground.displaysAsynchronously = false diff --git a/submodules/TelegramUI/Sources/ChatMessageBubbleItemNode.swift b/submodules/TelegramUI/Sources/ChatMessageBubbleItemNode.swift index f757cf18a2..10e70c3ded 100644 --- a/submodules/TelegramUI/Sources/ChatMessageBubbleItemNode.swift +++ b/submodules/TelegramUI/Sources/ChatMessageBubbleItemNode.swift @@ -2411,6 +2411,10 @@ class ChatMessageBubbleItemNode: ChatMessageItemView, ChatMessagePreviewItemNode } item.controllerInteraction.displayPsa(type, sourceNode) } + + if animation.isAnimated { + forwardInfoNode.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.2) + } } let previousForwardInfoNodeFrame = forwardInfoNode.frame forwardInfoNode.frame = CGRect(origin: CGPoint(x: contentOrigin.x + layoutConstants.text.bubbleInsets.left, y: layoutConstants.bubble.contentInsets.top + forwardInfoOriginY), size: CGSize(width: bubbleContentWidth, height: forwardInfoSizeApply.0.height)) @@ -2420,8 +2424,17 @@ class ChatMessageBubbleItemNode: ChatMessageItemView, ChatMessagePreviewItemNode } } } else { - strongSelf.forwardInfoNode?.removeFromSupernode() - strongSelf.forwardInfoNode = nil + if animation.isAnimated { + if let forwardInfoNode = strongSelf.forwardInfoNode { + strongSelf.forwardInfoNode = nil + forwardInfoNode.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.1, removeOnCompletion: false, completion: { [weak forwardInfoNode] _ in + forwardInfoNode?.removeFromSupernode() + }) + } + } else { + strongSelf.forwardInfoNode?.removeFromSupernode() + strongSelf.forwardInfoNode = nil + } } if let replyInfoNode = replyInfoSizeApply.1() { diff --git a/submodules/TelegramUI/Sources/ChatThemeScreen.swift b/submodules/TelegramUI/Sources/ChatThemeScreen.swift index 9dd160623d..8729b5fd1b 100644 --- a/submodules/TelegramUI/Sources/ChatThemeScreen.swift +++ b/submodules/TelegramUI/Sources/ChatThemeScreen.swift @@ -440,7 +440,10 @@ final class ChatThemeScreen: ViewController { return } strongSelf.dismiss() - strongSelf.completion(emoticon) + if strongSelf.initiallySelectedEmoticon == nil && emoticon == nil { + } else { + strongSelf.completion(emoticon) + } } self.controllerNode.dismiss = { [weak self] in self?.presentingViewController?.dismiss(animated: false, completion: nil) @@ -456,6 +459,8 @@ final class ChatThemeScreen: ViewController { override public func loadView() { super.loadView() + + self.view.disablesInteractiveTransitionGestureRecognizer = true } override public func viewDidAppear(_ animated: Bool) { diff --git a/submodules/TelegramUI/Sources/ForwardAccessoryPanelNode.swift b/submodules/TelegramUI/Sources/ForwardAccessoryPanelNode.swift index f45fdc528d..114d51c871 100644 --- a/submodules/TelegramUI/Sources/ForwardAccessoryPanelNode.swift +++ b/submodules/TelegramUI/Sources/ForwardAccessoryPanelNode.swift @@ -161,7 +161,11 @@ final class ForwardAccessoryPanelNode: AccessoryPanelNode { if !authors.isEmpty { authors.append(", ") } - authors.append(author.compactDisplayTitle) + if author.id == context.account.peerId { + authors.append(strongSelf.strings.DialogList_You) + } else { + authors.append(author.compactDisplayTitle) + } } if let peer = message.peers[message.id.peerId] { sourcePeer = (peer.id.namespace == Namespaces.Peer.CloudUser, peer.displayTitle(strings: strongSelf.strings, displayOrder: strongSelf.nameDisplayOrder)) @@ -201,7 +205,14 @@ final class ForwardAccessoryPanelNode: AccessoryPanelNode { if let strongSelf = self, count < 3 { Queue.mainQueue().after(3.0) { if let snapshotView = strongSelf.textNode.view.snapshotContentTree() { - strongSelf.textNode.attributedText = NSAttributedString(string: strongSelf.strings.Conversation_ForwardOptions_TapForOptions, font: Font.regular(15.0), textColor: strongSelf.theme.chat.inputPanel.secondaryTextColor) + let text: String + if let (size, _) = strongSelf.validLayout, size.width > 320.0 { + text = strongSelf.strings.Conversation_ForwardOptions_TapForOptions + } else { + text = strongSelf.strings.Conversation_ForwardOptions_TapForOptionsShort + } + + strongSelf.textNode.attributedText = NSAttributedString(string: text, font: Font.regular(15.0), textColor: strongSelf.theme.chat.inputPanel.secondaryTextColor) strongSelf.view.addSubview(snapshotView) diff --git a/submodules/TelegramUI/Sources/PeerInfo/PeerInfoScreen.swift b/submodules/TelegramUI/Sources/PeerInfo/PeerInfoScreen.swift index 54148e48da..8352545820 100644 --- a/submodules/TelegramUI/Sources/PeerInfo/PeerInfoScreen.swift +++ b/submodules/TelegramUI/Sources/PeerInfo/PeerInfoScreen.swift @@ -3491,6 +3491,8 @@ private final class PeerInfoScreenNode: ViewControllerTracingNode, UIScrollViewD canChangeColors = peer.hasPermission(.changeInfo) } else if let peer = peer as? TelegramGroup, case .member = peer.role { canChangeColors = !peer.hasBannedPermission(.banChangeInfo) + } else if self.data?.encryptionKeyFingerprint != nil { + canChangeColors = false } if canChangeColors { diff --git a/submodules/WallpaperResources/Sources/WallpaperResources.swift b/submodules/WallpaperResources/Sources/WallpaperResources.swift index 0d65d1a044..020645aa1d 100644 --- a/submodules/WallpaperResources/Sources/WallpaperResources.swift +++ b/submodules/WallpaperResources/Sources/WallpaperResources.swift @@ -1310,7 +1310,7 @@ public func themeIconImage(account: Account, accountManager: AccountManager