diff --git a/submodules/SettingsUI/Sources/Themes/SettingsThemeWallpaperNode.swift b/submodules/SettingsUI/Sources/Themes/SettingsThemeWallpaperNode.swift index 439bc07da9..3bb0743e50 100644 --- a/submodules/SettingsUI/Sources/Themes/SettingsThemeWallpaperNode.swift +++ b/submodules/SettingsUI/Sources/Themes/SettingsThemeWallpaperNode.swift @@ -42,12 +42,14 @@ final class SettingsThemeWallpaperNode: ASDisplayNode { var pressed: (() -> Void)? + private let displayLoading: Bool private var isSelected: Bool = false private var isLoaded: Bool = false private let isLoadedDisposable = MetaDisposable() - init(overlayBackgroundColor: UIColor = UIColor(white: 0.0, alpha: 0.3)) { + init(displayLoading: Bool = false, overlayBackgroundColor: UIColor = UIColor(white: 0.0, alpha: 0.3)) { + self.displayLoading = displayLoading self.imageNode.contentAnimations = [.subsequentUpdates] self.statusNode = RadialStatusNode(backgroundNodeColor: overlayBackgroundColor) @@ -86,7 +88,7 @@ final class SettingsThemeWallpaperNode: ASDisplayNode { private func updateStatus(animated: Bool) { if self.isSelected { - if self.isLoaded { + if self.isLoaded || !displayLoading { self.statusNode.transitionToState(.check(.white), animated: animated, completion: {}) } else { self.statusNode.transitionToState(.progress(color: .white, lineWidth: nil, value: nil, cancelEnabled: false, animateRotation: true), animated: animated, completion: {}) diff --git a/submodules/SettingsUI/Sources/Themes/ThemeColorsGridControllerItem.swift b/submodules/SettingsUI/Sources/Themes/ThemeColorsGridControllerItem.swift index fecf396153..b2c1cbcdb1 100644 --- a/submodules/SettingsUI/Sources/Themes/ThemeColorsGridControllerItem.swift +++ b/submodules/SettingsUI/Sources/Themes/ThemeColorsGridControllerItem.swift @@ -47,7 +47,7 @@ final class ThemeColorsGridControllerItemNode: GridItemNode { private var interaction: ThemeColorsGridControllerInteraction? override init() { - self.wallpaperNode = SettingsThemeWallpaperNode() + self.wallpaperNode = SettingsThemeWallpaperNode(displayLoading: false) super.init() self.addSubnode(self.wallpaperNode) diff --git a/submodules/SettingsUI/Sources/Themes/ThemeGridControllerItem.swift b/submodules/SettingsUI/Sources/Themes/ThemeGridControllerItem.swift index bd2b3e5622..0652c21f76 100644 --- a/submodules/SettingsUI/Sources/Themes/ThemeGridControllerItem.swift +++ b/submodules/SettingsUI/Sources/Themes/ThemeGridControllerItem.swift @@ -52,7 +52,7 @@ final class ThemeGridControllerItemNode: GridItemNode { private var item: ThemeGridControllerItem? override init() { - self.wallpaperNode = SettingsThemeWallpaperNode() + self.wallpaperNode = SettingsThemeWallpaperNode(displayLoading: false) super.init() diff --git a/submodules/SettingsUI/Sources/Themes/WallpaperPatternPanelNode.swift b/submodules/SettingsUI/Sources/Themes/WallpaperPatternPanelNode.swift index aa6951a7d5..5819a342a5 100644 --- a/submodules/SettingsUI/Sources/Themes/WallpaperPatternPanelNode.swift +++ b/submodules/SettingsUI/Sources/Themes/WallpaperPatternPanelNode.swift @@ -128,7 +128,7 @@ private final class WallpaperPatternItemNode : ListViewItemNode { var item: WallpaperPatternItem? init() { - self.wallpaperNode = SettingsThemeWallpaperNode() + self.wallpaperNode = SettingsThemeWallpaperNode(displayLoading: true) super.init(layerBacked: false, dynamicBounce: false, rotated: false, seeThrough: false) @@ -347,7 +347,7 @@ final class WallpaperPatternPanelNode: ASDisplayNode { } for wallpaper in self.wallpapers { - let node = SettingsThemeWallpaperNode(overlayBackgroundColor: self.serviceBackgroundColor.withAlphaComponent(0.4)) + let node = SettingsThemeWallpaperNode(displayLoading: true, overlayBackgroundColor: self.serviceBackgroundColor.withAlphaComponent(0.4)) node.clipsToBounds = true node.cornerRadius = 5.0 diff --git a/submodules/TelegramPresentationData/Sources/ChatControllerBackgroundNode.swift b/submodules/TelegramPresentationData/Sources/ChatControllerBackgroundNode.swift index 0fd7fbdc7c..0f174bb29f 100644 --- a/submodules/TelegramPresentationData/Sources/ChatControllerBackgroundNode.swift +++ b/submodules/TelegramPresentationData/Sources/ChatControllerBackgroundNode.swift @@ -107,7 +107,6 @@ public func chatControllerBackgroundImage(theme: PresentationTheme?, wallpaper i private var signalBackgroundImageForWallpaper: (TelegramWallpaper, Bool, UIImage)? public func chatControllerBackgroundImageSignal(wallpaper: TelegramWallpaper, mediaBox: MediaBox, accountMediaBox: MediaBox) -> Signal<(UIImage?, Bool)?, NoError> { - var backgroundImage: UIImage? if wallpaper == signalBackgroundImageForWallpaper?.0, (wallpaper.settings?.blur ?? false) == signalBackgroundImageForWallpaper?.1, let image = signalBackgroundImageForWallpaper?.2 { return .single((image, true)) } else { @@ -259,7 +258,7 @@ public func chatControllerBackgroundImageSignal(wallpaper: TelegramWallpaper, me } } else { return Signal { subscriber in - let fetch = fetchedMediaResource(mediaBox: accountMediaBox, reference: MediaResourceReference.standalone(resource: file.file.resource)).start() + let fetch = fetchedMediaResource(mediaBox: accountMediaBox, reference: MediaResourceReference.wallpaper(wallpaper: WallpaperReference.slug(file.slug), resource: file.file.resource)).start() let data = accountMediaBox.resourceData(file.file.resource).start(next: { data in if data.complete { if let image = UIImage(contentsOfFile: data.path)?.precomposed() { diff --git a/submodules/WallpaperBackgroundNode/Sources/WallpaperBackgroundNode.swift b/submodules/WallpaperBackgroundNode/Sources/WallpaperBackgroundNode.swift index 11110e8c4e..56b9fd05f9 100644 --- a/submodules/WallpaperBackgroundNode/Sources/WallpaperBackgroundNode.swift +++ b/submodules/WallpaperBackgroundNode/Sources/WallpaperBackgroundNode.swift @@ -267,6 +267,7 @@ public final class WallpaperBackgroundNode: ASDisplayNode { let size: CGSize let patternColor: UInt32 let backgroundColor: UInt32 + let invertPattern: Bool } private var validPatternGeneratedImage: ValidPatternGeneratedImage? @@ -527,7 +528,11 @@ public final class WallpaperBackgroundNode: ASDisplayNode { self.patternImageNode.layer.compositingFilter = nil } else { self.patternImageNode.alpha = intensity - self.patternImageNode.layer.compositingFilter = "softLightBlendMode" + if patternIsLight { + self.patternImageNode.layer.compositingFilter = "softLightBlendMode" + } else { + self.patternImageNode.layer.compositingFilter = nil + } } self.patternImageNode.isHidden = false invertPattern = intensity < 0 @@ -566,7 +571,7 @@ public final class WallpaperBackgroundNode: ASDisplayNode { patternBackgroundColor = .clear } - let updatedGeneratedImage = ValidPatternGeneratedImage(wallpaper: validPatternImage.wallpaper, size: size, patternColor: patternColor.rgb, backgroundColor: patternBackgroundColor.rgb) + let updatedGeneratedImage = ValidPatternGeneratedImage(wallpaper: validPatternImage.wallpaper, size: size, patternColor: patternColor.rgb, backgroundColor: patternBackgroundColor.rgb, invertPattern: invertPattern) if self.validPatternGeneratedImage != updatedGeneratedImage { self.validPatternGeneratedImage = updatedGeneratedImage