Fix bubbles in photo gallery wallpaper preview

This commit is contained in:
Ali 2021-06-17 13:48:44 +04:00
parent 01c5299c00
commit d9905be2c5
2 changed files with 29 additions and 8 deletions

View File

@ -330,6 +330,11 @@ final class WallpaperGalleryItemNode: GalleryItemNode {
self.patternButtonNode.isSelected = false self.patternButtonNode.isSelected = false
self.playButtonNode.setImage(self.playButtonRotateImage, for: []) 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: default:
self.nativeNode.isHidden = true self.nativeNode.isHidden = true
self.patternButtonNode.isSelected = false self.patternButtonNode.isSelected = false

View File

@ -86,7 +86,9 @@ public final class WallpaperBackgroundNode: ASDisplayNode {
return 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) let graphics = PresentationResourcesChat.principalGraphics(theme: bubbleTheme, wallpaper: wallpaper, bubbleCorners: bubbleCorners)
var needsCleanBackground = false var needsCleanBackground = false
switch self.bubbleType { switch self.bubbleType {
@ -280,6 +282,7 @@ public final class WallpaperBackgroundNode: ASDisplayNode {
private var validLayout: CGSize? private var validLayout: CGSize?
private var wallpaper: TelegramWallpaper? private var wallpaper: TelegramWallpaper?
private var isSettingUpWallpaper: Bool = false
private struct CachedValidPatternImage { private struct CachedValidPatternImage {
let generate: (TransformImageArguments) -> DrawingContext? 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) { private func loadPatternForSizeIfNeeded(size: CGSize, transition: ContainedViewLayoutTransition) {
guard let wallpaper = self.wallpaper else { guard let wallpaper = self.wallpaper else {
return return
@ -711,19 +718,28 @@ public final class WallpaperBackgroundNode: ASDisplayNode {
} }
public func hasBubbleBackground(for type: WallpaperBackgroundNode.BubbleBackgroundNode.BubbleType) -> Bool { 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 return false
} }
var hasPlainWallpaper = false var hasPlainWallpaper = false
switch wallpaper { let graphicsWallpaper: TelegramWallpaper
case .color: if let wallpaper = self.wallpaper {
hasPlainWallpaper = true switch wallpaper {
default: case .color:
break 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 { switch type {
case .incoming: case .incoming:
if graphics.incomingBubbleGradientImage != nil { if graphics.incomingBubbleGradientImage != nil {