mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-10-09 03:20:48 +00:00
Various theme editor fixes
This commit is contained in:
parent
b3ded6f7f7
commit
cb2661c6be
@ -361,7 +361,7 @@ public func editThemeController(context: AccountContext, mode: EditThemeControll
|
||||
if let settings = previousSettings {
|
||||
generalThemeReference = .builtin(PresentationBuiltinThemeReference(baseTheme: settings.baseTheme))
|
||||
}
|
||||
let controller = ThemeAccentColorController(context: context, mode: .edit(theme: theme, wallpaper: nil, generalThemeReference: generalThemeReference, defaultThemeReference: nil, create: false, completion: { updatedTheme, settings in
|
||||
let controller = ThemeAccentColorController(context: context, mode: .edit(settings: previousSettings, theme: theme, wallpaper: nil, generalThemeReference: generalThemeReference, defaultThemeReference: nil, create: false, completion: { updatedTheme, settings in
|
||||
updateState { current in
|
||||
var state = current
|
||||
previewThemePromise.set(.single(updatedTheme))
|
||||
|
@ -22,13 +22,13 @@ extension TelegramThemeSettings {
|
||||
enum ThemeAccentColorControllerMode {
|
||||
case colors(themeReference: PresentationThemeReference, create: Bool)
|
||||
case background(themeReference: PresentationThemeReference)
|
||||
case edit(theme: PresentationTheme, wallpaper: TelegramWallpaper?, generalThemeReference: PresentationThemeReference?, defaultThemeReference: PresentationThemeReference?, create: Bool, completion: (PresentationTheme, TelegramThemeSettings?) -> Void)
|
||||
case edit(settings: TelegramThemeSettings?, theme: PresentationTheme, wallpaper: TelegramWallpaper?, generalThemeReference: PresentationThemeReference?, defaultThemeReference: PresentationThemeReference?, create: Bool, completion: (PresentationTheme, TelegramThemeSettings?) -> Void)
|
||||
|
||||
var themeReference: PresentationThemeReference? {
|
||||
switch self {
|
||||
case let .colors(themeReference, _), let .background(themeReference):
|
||||
return themeReference
|
||||
case let .edit(_, _, _, defaultThemeReference, _, _):
|
||||
case let .edit(_, _, _, _, defaultThemeReference, _, _):
|
||||
return defaultThemeReference
|
||||
}
|
||||
}
|
||||
@ -135,7 +135,7 @@ final class ThemeAccentColorController: ViewController {
|
||||
|
||||
let theme: PresentationTheme
|
||||
let initialWallpaper: TelegramWallpaper
|
||||
if case let .edit(editedTheme, walpaper, _, _, _, _) = self.mode {
|
||||
if case let .edit(_, editedTheme, walpaper, _, _, _, _) = self.mode {
|
||||
theme = editedTheme
|
||||
initialWallpaper = walpaper ?? editedTheme.chat.defaultWallpaper
|
||||
} else {
|
||||
@ -184,7 +184,7 @@ final class ThemeAccentColorController: ViewController {
|
||||
prepareWallpaper = .complete()
|
||||
}
|
||||
|
||||
if case let .edit(theme, _, generalThemeReference, _, _, completion) = strongSelf.mode {
|
||||
if case let .edit(themeSettings, theme, _, generalThemeReference, _, _, completion) = strongSelf.mode {
|
||||
let _ = (prepareWallpaper
|
||||
|> deliverOnMainQueue).start(completed: {
|
||||
let updatedTheme: PresentationTheme
|
||||
@ -192,7 +192,10 @@ final class ThemeAccentColorController: ViewController {
|
||||
var hasSettings = false
|
||||
var baseTheme: TelegramBaseTheme?
|
||||
|
||||
if case let .cloud(theme) = generalThemeReference, let settings = theme.theme.settings {
|
||||
if let settings = themeSettings {
|
||||
hasSettings = true
|
||||
baseTheme = settings.baseTheme
|
||||
} else if case let .cloud(theme) = generalThemeReference, let settings = theme.theme.settings {
|
||||
hasSettings = true
|
||||
baseTheme = settings.baseTheme
|
||||
} else if case let .builtin(theme) = generalThemeReference {
|
||||
@ -562,11 +565,21 @@ final class ThemeAccentColorController: ViewController {
|
||||
}
|
||||
|
||||
messageColors = theme.chat.message.outgoing.bubble.withWallpaper.fill.map(\.rgb)
|
||||
|
||||
animateMessageColors = theme.chat.animateMessageColors
|
||||
}
|
||||
}
|
||||
} else if case let .edit(theme, wallpaper, _, _, _, _) = strongSelf.mode {
|
||||
} else if case let .edit(settings, theme, wallpaper, _, _, _, _) = strongSelf.mode {
|
||||
if let settings = settings {
|
||||
accentColor = UIColor(rgb: settings.accentColor)
|
||||
outgoingAccentColor = settings.outgoingAccentColor.flatMap { UIColor(rgb: $0) }
|
||||
|
||||
let wallpaper = settings.wallpaper ?? theme.chat.defaultWallpaper
|
||||
extractWallpaperParameters(wallpaper)
|
||||
initialWallpaper = wallpaper
|
||||
|
||||
messageColors = settings.messageColors
|
||||
animateMessageColors = settings.animateMessageColors
|
||||
} else {
|
||||
accentColor = theme.rootController.navigationBar.accentTextColor
|
||||
outgoingAccentColor = nil
|
||||
|
||||
@ -578,8 +591,8 @@ final class ThemeAccentColorController: ViewController {
|
||||
}
|
||||
|
||||
messageColors = theme.chat.message.outgoing.bubble.withWallpaper.fill.map(\.rgb)
|
||||
|
||||
animateMessageColors = theme.chat.animateMessageColors
|
||||
}
|
||||
} else {
|
||||
accentColor = defaultDayAccentColor
|
||||
outgoingAccentColor = nil
|
||||
|
@ -295,7 +295,7 @@ final class ThemeAccentColorControllerNode: ASDisplayNode, UIScrollViewDelegate
|
||||
self.patternPanelNode = WallpaperPatternPanelNode(context: self.context, theme: self.theme, strings: self.presentationData.strings)
|
||||
|
||||
let doneButtonType: WallpaperGalleryToolbarDoneButtonType
|
||||
if case .edit(_, _, _, _, true, _) = self.mode {
|
||||
if case .edit(_, _, _, _, _, true, _) = self.mode {
|
||||
doneButtonType = .proceed
|
||||
} else {
|
||||
doneButtonType = .set
|
||||
@ -497,7 +497,7 @@ final class ThemeAccentColorControllerNode: ASDisplayNode, UIScrollViewDelegate
|
||||
if !updateOnlyWallpaper {
|
||||
if let themeReference = mode.themeReference {
|
||||
updatedTheme = makePresentationTheme(mediaBox: context.sharedContext.accountManager.mediaBox, themeReference: themeReference, accentColor: accentColor.color, outgoingAccentColor: outgoingAccentColor?.color, backgroundColors: backgroundColors.map { $0.rgb }, bubbleColors: messagesColors.map { $0.rgb }, animateBubbleColors: state.animateMessageColors, serviceBackgroundColor: serviceBackgroundColor, preview: true) ?? defaultPresentationTheme
|
||||
} else if case let .edit(theme, _, _, _, _, _) = mode {
|
||||
} else if case let .edit(_, theme, _, _, _, _, _) = mode {
|
||||
updatedTheme = customizePresentationTheme(theme, editing: false, accentColor: accentColor.color, outgoingAccentColor: outgoingAccentColor?.color, backgroundColors: backgroundColors.map { $0.rgb }, bubbleColors: messagesColors.map { $0.rgb }, animateBubbleColors: state.animateMessageColors)
|
||||
} else {
|
||||
updatedTheme = theme
|
||||
@ -749,7 +749,7 @@ final class ThemeAccentColorControllerNode: ASDisplayNode, UIScrollViewDelegate
|
||||
doneButtonType = .apply
|
||||
cancelButtonType = .discard
|
||||
} else {
|
||||
if case .edit(_, _, _, _, true, _) = self.mode {
|
||||
if case .edit(_, _, _, _, _, true, _) = self.mode {
|
||||
doneButtonType = .proceed
|
||||
} else {
|
||||
doneButtonType = .set
|
||||
@ -1189,7 +1189,12 @@ final class ThemeAccentColorControllerNode: ASDisplayNode, UIScrollViewDelegate
|
||||
} else {
|
||||
self.view.endEditing(true)
|
||||
|
||||
let wallpaper = self.state.previousPatternWallpaper ?? self.patternPanelNode.wallpapers.first
|
||||
let wallpaper: TelegramWallpaper?
|
||||
if let currentPatternWallpaper = self.state.patternWallpaper {
|
||||
wallpaper = currentPatternWallpaper
|
||||
} else {
|
||||
wallpaper = self.state.previousPatternWallpaper ?? self.patternPanelNode.wallpapers.first
|
||||
}
|
||||
let backgroundColors = self.currentBackgroundColors
|
||||
|
||||
var appeared = false
|
||||
|
@ -712,7 +712,7 @@ public func themeSettingsController(context: AccountContext, focusOnItemTag: The
|
||||
|
||||
let _ = (resolvedWallpaper
|
||||
|> deliverOnMainQueue).start(next: { wallpaper in
|
||||
let controller = ThemeAccentColorController(context: context, mode: .edit(theme: theme, wallpaper: wallpaper, generalThemeReference: reference.generalThemeReference, defaultThemeReference: nil, create: true, completion: { result, settings in
|
||||
let controller = ThemeAccentColorController(context: context, mode: .edit(settings: nil, theme: theme, wallpaper: wallpaper, generalThemeReference: reference.generalThemeReference, defaultThemeReference: nil, create: true, completion: { result, settings in
|
||||
let controller = editThemeController(context: context, mode: .create(result, settings
|
||||
), navigateToChat: { peerId in
|
||||
if let navigationController = getNavigationControllerImpl?() {
|
||||
@ -947,10 +947,12 @@ public func themeSettingsController(context: AccountContext, focusOnItemTag: The
|
||||
let _ = (resolvedWallpaper
|
||||
|> deliverOnMainQueue).start(next: { wallpaper in
|
||||
var hasSettings = false
|
||||
var settings: TelegramThemeSettings?
|
||||
if case let .cloud(cloudTheme) = effectiveThemeReference, cloudTheme.theme.settings != nil {
|
||||
hasSettings = true
|
||||
settings = cloudTheme.theme.settings
|
||||
}
|
||||
let controller = ThemeAccentColorController(context: context, mode: .edit(theme: theme, wallpaper: wallpaper, generalThemeReference: effectiveThemeReference.generalThemeReference, defaultThemeReference: nil, create: true, completion: { result, settings in
|
||||
let controller = ThemeAccentColorController(context: context, mode: .edit(settings: settings, theme: theme, wallpaper: wallpaper, generalThemeReference: effectiveThemeReference.generalThemeReference, defaultThemeReference: nil, create: true, completion: { result, settings in
|
||||
let controller = editThemeController(context: context, mode: .create(hasSettings ? nil : result, hasSettings ? settings : nil), navigateToChat: { peerId in
|
||||
if let navigationController = getNavigationControllerImpl?() {
|
||||
context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: context, chatLocation: .peer(peerId)))
|
||||
|
@ -332,7 +332,7 @@ class ChatMessageAnimatedStickerItemNode: ChatMessageItemView {
|
||||
return .fail
|
||||
}
|
||||
|
||||
if strongSelf.telegramFile == nil {
|
||||
if false, strongSelf.telegramFile == nil {
|
||||
if let animationNode = strongSelf.animationNode, animationNode.frame.contains(point) {
|
||||
return .waitForDoubleTap
|
||||
}
|
||||
|
@ -157,11 +157,20 @@ private struct ThemeSettingsThemeItemNodeTransition {
|
||||
|
||||
private func ensureThemeVisible(listNode: ListView, emoticon: String?, animated: Bool) -> Bool {
|
||||
var resultNode: ThemeSettingsThemeItemIconNode?
|
||||
var previousNode: ThemeSettingsThemeItemIconNode?
|
||||
var nextNode: ThemeSettingsThemeItemIconNode?
|
||||
listNode.forEachItemNode { node in
|
||||
if resultNode == nil, let node = node as? ThemeSettingsThemeItemIconNode {
|
||||
guard let node = node as? ThemeSettingsThemeItemIconNode else {
|
||||
return
|
||||
}
|
||||
if resultNode == nil {
|
||||
if node.item?.emoticon == emoticon {
|
||||
resultNode = node
|
||||
} else {
|
||||
previousNode = node
|
||||
}
|
||||
} else if nextNode == nil {
|
||||
nextNode = node
|
||||
}
|
||||
}
|
||||
if let resultNode = resultNode {
|
||||
|
Loading…
x
Reference in New Issue
Block a user