Merge branch 'master' of gitlab.com:peter-iakovlev/telegram-ios

This commit is contained in:
Ilya Laktyushin 2021-06-13 20:49:12 +03:00
commit 57d334ea83
6 changed files with 16 additions and 10 deletions

View File

@ -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: {})

View File

@ -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)

View File

@ -52,7 +52,7 @@ final class ThemeGridControllerItemNode: GridItemNode {
private var item: ThemeGridControllerItem?
override init() {
self.wallpaperNode = SettingsThemeWallpaperNode()
self.wallpaperNode = SettingsThemeWallpaperNode(displayLoading: false)
super.init()

View File

@ -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

View File

@ -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() {

View File

@ -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