From d9905be2c591a7258ccbc769ae78aa581b088961 Mon Sep 17 00:00:00 2001 From: Ali <> Date: Thu, 17 Jun 2021 13:48:44 +0400 Subject: [PATCH] Fix bubbles in photo gallery wallpaper preview --- .../Sources/Themes/WallpaperGalleryItem.swift | 5 +++ .../Sources/WallpaperBackgroundNode.swift | 32 ++++++++++++++----- 2 files changed, 29 insertions(+), 8 deletions(-) diff --git a/submodules/SettingsUI/Sources/Themes/WallpaperGalleryItem.swift b/submodules/SettingsUI/Sources/Themes/WallpaperGalleryItem.swift index d58c026672..f4b8d09a0b 100644 --- a/submodules/SettingsUI/Sources/Themes/WallpaperGalleryItem.swift +++ b/submodules/SettingsUI/Sources/Themes/WallpaperGalleryItem.swift @@ -330,6 +330,11 @@ final class WallpaperGalleryItemNode: GalleryItemNode { self.patternButtonNode.isSelected = false self.playButtonNode.setImage(self.playButtonRotateImage, for: []) } + case .asset: + self.nativeNode._internalUpdateIsSettingUpWallpaper() + self.nativeNode.isHidden = true + self.patternButtonNode.isSelected = false + self.playButtonNode.setImage(self.playButtonRotateImage, for: []) default: self.nativeNode.isHidden = true self.patternButtonNode.isSelected = false diff --git a/submodules/WallpaperBackgroundNode/Sources/WallpaperBackgroundNode.swift b/submodules/WallpaperBackgroundNode/Sources/WallpaperBackgroundNode.swift index 066e69fb13..1a2bb99131 100644 --- a/submodules/WallpaperBackgroundNode/Sources/WallpaperBackgroundNode.swift +++ b/submodules/WallpaperBackgroundNode/Sources/WallpaperBackgroundNode.swift @@ -86,7 +86,9 @@ public final class WallpaperBackgroundNode: ASDisplayNode { return } - if let bubbleTheme = backgroundNode.bubbleTheme, let wallpaper = backgroundNode.wallpaper, let bubbleCorners = backgroundNode.bubbleCorners { + if let bubbleTheme = backgroundNode.bubbleTheme, let bubbleCorners = backgroundNode.bubbleCorners { + let wallpaper = backgroundNode.wallpaper ?? bubbleTheme.chat.defaultWallpaper + let graphics = PresentationResourcesChat.principalGraphics(theme: bubbleTheme, wallpaper: wallpaper, bubbleCorners: bubbleCorners) var needsCleanBackground = false switch self.bubbleType { @@ -280,6 +282,7 @@ public final class WallpaperBackgroundNode: ASDisplayNode { private var validLayout: CGSize? private var wallpaper: TelegramWallpaper? + private var isSettingUpWallpaper: Bool = false private struct CachedValidPatternImage { let generate: (TransformImageArguments) -> DrawingContext? @@ -513,6 +516,10 @@ public final class WallpaperBackgroundNode: ASDisplayNode { } } + public func _internalUpdateIsSettingUpWallpaper() { + self.isSettingUpWallpaper = true + } + private func loadPatternForSizeIfNeeded(size: CGSize, transition: ContainedViewLayoutTransition) { guard let wallpaper = self.wallpaper else { return @@ -711,19 +718,28 @@ public final class WallpaperBackgroundNode: ASDisplayNode { } public func hasBubbleBackground(for type: WallpaperBackgroundNode.BubbleBackgroundNode.BubbleType) -> Bool { - guard let bubbleTheme = self.bubbleTheme, let wallpaper = self.wallpaper, let bubbleCorners = self.bubbleCorners else { + guard let bubbleTheme = self.bubbleTheme, let bubbleCorners = self.bubbleCorners else { + return false + } + if self.wallpaper == nil && !self.isSettingUpWallpaper { return false } var hasPlainWallpaper = false - switch wallpaper { - case .color: - hasPlainWallpaper = true - default: - break + let graphicsWallpaper: TelegramWallpaper + if let wallpaper = self.wallpaper { + switch wallpaper { + case .color: + hasPlainWallpaper = true + default: + break + } + graphicsWallpaper = wallpaper + } else { + graphicsWallpaper = bubbleTheme.chat.defaultWallpaper } - let graphics = PresentationResourcesChat.principalGraphics(theme: bubbleTheme, wallpaper: wallpaper, bubbleCorners: bubbleCorners) + let graphics = PresentationResourcesChat.principalGraphics(theme: bubbleTheme, wallpaper: graphicsWallpaper, bubbleCorners: bubbleCorners) switch type { case .incoming: if graphics.incomingBubbleGradientImage != nil {