Theme editing fixes

This commit is contained in:
Ilya Laktyushin 2019-12-09 17:06:50 +04:00
parent 14e159807a
commit 97fc8311e5
15 changed files with 2807 additions and 2743 deletions

View File

@ -5181,3 +5181,5 @@ Any member of this group will be able to see messages in the channel.";
"Theme.Context.ChangeColors" = "Change Colors"; "Theme.Context.ChangeColors" = "Change Colors";
"EditTheme.ChangeColors" = "Change Colors"; "EditTheme.ChangeColors" = "Change Colors";
"Theme.Colors.Proceed" = "Proceed";

View File

@ -182,7 +182,7 @@ public enum DeviceMetrics: CaseIterable, Equatable {
case .iPhone4, .iPhone5, .iPhone6: case .iPhone4, .iPhone5, .iPhone6:
return 216.0 return 216.0
case .iPhone6Plus: case .iPhone6Plus:
return 227.0 return 226.0
case .iPhoneX: case .iPhoneX:
return 291.0 return 291.0
case .iPhoneXSMax: case .iPhoneXSMax:
@ -215,8 +215,10 @@ public enum DeviceMetrics: CaseIterable, Equatable {
switch self { switch self {
case .iPhone4, .iPhone5: case .iPhone4, .iPhone5:
return 37.0 return 37.0
case .iPhone6, .iPhone6Plus, .iPhoneX, .iPhoneXSMax: case .iPhone6, .iPhoneX, .iPhoneXSMax:
return 44.0 return 44.0
case .iPhone6Plus:
return 45.0
case .iPad, .iPadPro10Inch, .iPadPro11Inch, .iPadPro, .iPadPro3rdGen: case .iPad, .iPadPro10Inch, .iPadPro11Inch, .iPadPro, .iPadPro3rdGen:
return 50.0 return 50.0
case .unknown: case .unknown:

View File

@ -315,7 +315,7 @@ public func editThemeController(context: AccountContext, mode: EditThemeControll
let _ = (previewThemePromise.get() let _ = (previewThemePromise.get()
|> take(1) |> take(1)
|> deliverOnMainQueue).start(next: { theme in |> deliverOnMainQueue).start(next: { theme in
let controller = ThemeAccentColorController(context: context, mode: .edit(theme: theme, wallpaper: nil, defaultThemeReference: nil, completion: { updatedTheme in let controller = ThemeAccentColorController(context: context, mode: .edit(theme: theme, wallpaper: nil, defaultThemeReference: nil, create: false, completion: { updatedTheme in
updateState { current in updateState { current in
var state = current var state = current
previewThemePromise.set(.single(updatedTheme)) previewThemePromise.set(.single(updatedTheme))
@ -341,7 +341,7 @@ public func editThemeController(context: AccountContext, mode: EditThemeControll
guard complete, let fullSizeData = fullSizeData else { guard complete, let fullSizeData = fullSizeData else {
return .complete() return .complete()
} }
context.sharedContext.accountManager.mediaBox.storeResourceData(file.file.resource.id, data: fullSizeData) context.sharedContext.accountManager.mediaBox.storeResourceData(file.file.resource.id, data: fullSizeData, synchronous: true)
return .single(wallpaper.wallpaper) return .single(wallpaper.wallpaper)
} }
} else { } else {
@ -454,8 +454,8 @@ public func editThemeController(context: AccountContext, mode: EditThemeControll
let themeThumbnailData: Data? let themeThumbnailData: Data?
if let theme = theme, let themeString = encodePresentationTheme(theme), let data = themeString.data(using: .utf8) { if let theme = theme, let themeString = encodePresentationTheme(theme), let data = themeString.data(using: .utf8) {
let resource = LocalFileMediaResource(fileId: arc4random64()) let resource = LocalFileMediaResource(fileId: arc4random64())
context.account.postbox.mediaBox.storeResourceData(resource.id, data: data) context.account.postbox.mediaBox.storeResourceData(resource.id, data: data, synchronous: true)
context.sharedContext.accountManager.mediaBox.storeResourceData(resource.id, data: data) context.sharedContext.accountManager.mediaBox.storeResourceData(resource.id, data: data, synchronous: true)
themeResource = resource themeResource = resource
themeData = data themeData = data
@ -501,7 +501,7 @@ public func editThemeController(context: AccountContext, mode: EditThemeControll
current = PresentationThemeSettings.defaultSettings current = PresentationThemeSettings.defaultSettings
} }
if let resource = resultTheme.file?.resource, let data = themeData { if let resource = resultTheme.file?.resource, let data = themeData {
context.sharedContext.accountManager.mediaBox.storeResourceData(resource.id, data: data) context.sharedContext.accountManager.mediaBox.storeResourceData(resource.id, data: data, synchronous: true)
} }
let themeReference: PresentationThemeReference = .cloud(PresentationCloudTheme(theme: resultTheme, resolvedWallpaper: resolvedWallpaper)) let themeReference: PresentationThemeReference = .cloud(PresentationCloudTheme(theme: resultTheme, resolvedWallpaper: resolvedWallpaper))
@ -542,7 +542,7 @@ public func editThemeController(context: AccountContext, mode: EditThemeControll
current = PresentationThemeSettings.defaultSettings current = PresentationThemeSettings.defaultSettings
} }
if let resource = resultTheme.file?.resource, let data = themeData { if let resource = resultTheme.file?.resource, let data = themeData {
context.sharedContext.accountManager.mediaBox.storeResourceData(resource.id, data: data) context.sharedContext.accountManager.mediaBox.storeResourceData(resource.id, data: data, synchronous: true)
} }
let themeReference: PresentationThemeReference = .cloud(PresentationCloudTheme(theme: resultTheme, resolvedWallpaper: resolvedWallpaper)) let themeReference: PresentationThemeReference = .cloud(PresentationCloudTheme(theme: resultTheme, resolvedWallpaper: resolvedWallpaper))

View File

@ -16,13 +16,13 @@ private let colors: [Int32] = [0x007aff, 0x00c2ed, 0x29b327, 0xeb6ca4, 0xf08200,
enum ThemeAccentColorControllerMode { enum ThemeAccentColorControllerMode {
case colors(themeReference: PresentationThemeReference) case colors(themeReference: PresentationThemeReference)
case background(themeReference: PresentationThemeReference) case background(themeReference: PresentationThemeReference)
case edit(theme: PresentationTheme, wallpaper: TelegramWallpaper?, defaultThemeReference: PresentationThemeReference?, completion: (PresentationTheme) -> Void) case edit(theme: PresentationTheme, wallpaper: TelegramWallpaper?, defaultThemeReference: PresentationThemeReference?, create: Bool, completion: (PresentationTheme) -> Void)
var themeReference: PresentationThemeReference? { var themeReference: PresentationThemeReference? {
switch self { switch self {
case let .colors(themeReference), let .background(themeReference): case let .colors(themeReference), let .background(themeReference):
return themeReference return themeReference
case let .edit(_, _, defaultThemeReference, _): case let .edit(_, _, defaultThemeReference, _, _):
return defaultThemeReference return defaultThemeReference
default: default:
return nil return nil
@ -121,7 +121,7 @@ final class ThemeAccentColorController: ViewController {
let theme: PresentationTheme let theme: PresentationTheme
let wallpaper: TelegramWallpaper let wallpaper: TelegramWallpaper
if case let .edit(editedTheme, walpaper, _, _) = self.mode { if case let .edit(editedTheme, walpaper, _, _, _) = self.mode {
theme = editedTheme theme = editedTheme
wallpaper = walpaper ?? editedTheme.chat.defaultWallpaper wallpaper = walpaper ?? editedTheme.chat.defaultWallpaper
} else { } else {
@ -136,7 +136,7 @@ final class ThemeAccentColorController: ViewController {
}, apply: { [weak self] state, serviceBackgroundColor in }, apply: { [weak self] state, serviceBackgroundColor in
if let strongSelf = self { if let strongSelf = self {
let context = strongSelf.context let context = strongSelf.context
if case let .edit(theme, _, themeReference, completion) = strongSelf.mode { if case let .edit(theme, _, themeReference, _, completion) = strongSelf.mode {
let updatedTheme: PresentationTheme let updatedTheme: PresentationTheme
if let themeReference = themeReference { if let themeReference = themeReference {
updatedTheme = makePresentationTheme(mediaBox: context.sharedContext.accountManager.mediaBox, themeReference: themeReference, accentColor: state.accentColor, bubbleColors: state.messagesColors, backgroundColors: state.backgroundColors, serviceBackgroundColor: serviceBackgroundColor) ?? defaultPresentationTheme updatedTheme = makePresentationTheme(mediaBox: context.sharedContext.accountManager.mediaBox, themeReference: themeReference, accentColor: state.accentColor, bubbleColors: state.messagesColors, backgroundColors: state.backgroundColors, serviceBackgroundColor: serviceBackgroundColor) ?? defaultPresentationTheme
@ -145,8 +145,6 @@ final class ThemeAccentColorController: ViewController {
} }
completion(updatedTheme) completion(updatedTheme)
strongSelf.dismiss()
} else { } else {
let _ = (updatePresentationThemeSettingsInteractively(accountManager: context.sharedContext.accountManager, { current in let _ = (updatePresentationThemeSettingsInteractively(accountManager: context.sharedContext.accountManager, { current in
let autoNightModeTriggered = context.sharedContext.currentPresentationData.with { $0 }.autoNightModeTriggered let autoNightModeTriggered = context.sharedContext.currentPresentationData.with { $0 }.autoNightModeTriggered
@ -244,7 +242,7 @@ final class ThemeAccentColorController: ViewController {
if strongSelf.mode.themeReference == .builtin(.dayClassic) { if strongSelf.mode.themeReference == .builtin(.dayClassic) {
defaultMessagesColor = UIColor(rgb: 0xe1ffc7) defaultMessagesColor = UIColor(rgb: 0xe1ffc7)
} }
} else if case let .edit(theme, wallpaper, _, _) = strongSelf.mode { } else if case let .edit(theme, wallpaper, _, _, _) = strongSelf.mode {
accentColor = theme.rootController.navigationBar.accentTextColor accentColor = theme.rootController.navigationBar.accentTextColor
if case let .color(color) = theme.chat.defaultWallpaper { if case let .color(color) = theme.chat.defaultWallpaper {
backgroundColors = (UIColor(rgb: UInt32(bitPattern: color)), nil) backgroundColors = (UIColor(rgb: UInt32(bitPattern: color)), nil)

View File

@ -170,7 +170,14 @@ final class ThemeAccentColorControllerNode: ASDisplayNode, UIScrollViewDelegate
} }
self.colorPanelNode = WallpaperColorPanelNode(theme: self.theme, strings: self.presentationData.strings) self.colorPanelNode = WallpaperColorPanelNode(theme: self.theme, strings: self.presentationData.strings)
self.toolbarNode = WallpaperGalleryToolbarNode(theme: self.theme, strings: self.presentationData.strings)
let doneButtonType: WallpaperGalleryToolbarDoneButtonType
if case .edit(_, _, _, true, _) = self.mode {
doneButtonType = .proceed
} else {
doneButtonType = .set
}
self.toolbarNode = WallpaperGalleryToolbarNode(theme: self.theme, strings: self.presentationData.strings, doneButtonType: doneButtonType)
self.maskNode = ASImageNode() self.maskNode = ASImageNode()
self.maskNode.displaysAsynchronously = false self.maskNode.displaysAsynchronously = false
@ -270,7 +277,7 @@ final class ThemeAccentColorControllerNode: ASDisplayNode, UIScrollViewDelegate
let updatedTheme: PresentationTheme let updatedTheme: PresentationTheme
if let themeReference = mode.themeReference { if let themeReference = mode.themeReference {
updatedTheme = makePresentationTheme(mediaBox: context.sharedContext.accountManager.mediaBox, themeReference: themeReference, accentColor: accentColor, bubbleColors: messagesColors, serviceBackgroundColor: serviceBackgroundColor, preview: true) ?? defaultPresentationTheme updatedTheme = makePresentationTheme(mediaBox: context.sharedContext.accountManager.mediaBox, themeReference: themeReference, accentColor: accentColor, bubbleColors: messagesColors, 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, backgroundColors: backgroundColors, bubbleColors: messagesColors) updatedTheme = customizePresentationTheme(theme, editing: false, accentColor: accentColor, backgroundColors: backgroundColors, bubbleColors: messagesColors)
} else { } else {
updatedTheme = theme updatedTheme = theme

View File

@ -55,10 +55,20 @@ public final class ThemePreviewController: ViewController {
self.blocksBackgroundWhenInOverlay = true self.blocksBackgroundWhenInOverlay = true
self.navigationPresentation = .modal self.navigationPresentation = .modal
var hasInstallsCount = false
let themeName: String let themeName: String
if case let .theme(theme) = source { if case let .theme(theme) = source {
themeName = theme.title themeName = theme.title
self.theme.set(.single(theme)) self.theme.set(.single(theme)
|> then(
getTheme(account: context.account, slug: theme.slug)
|> map(Optional.init)
|> `catch` { _ -> Signal<TelegramTheme?, NoError> in
return .single(nil)
}
|> filter { $0 != nil }
))
hasInstallsCount = true
} else if case let .slug(slug, _) = source { } else if case let .slug(slug, _) = source {
self.theme.set(getTheme(account: context.account, slug: slug) self.theme.set(getTheme(account: context.account, slug: slug)
|> map(Optional.init) |> map(Optional.init)
@ -84,6 +94,15 @@ public final class ThemePreviewController: ViewController {
} }
} }
)) ))
hasInstallsCount = true
} else if case let .settings(themeReference) = source, case let .cloud(theme) = themeReference {
self.theme.set(getTheme(account: context.account, slug: theme.theme.slug)
|> map(Optional.init)
|> `catch` { _ -> Signal<TelegramTheme?, NoError> in
return .single(nil)
})
themeName = previewTheme.name.string
hasInstallsCount = true
} else { } else {
self.theme.set(.single(nil)) self.theme.set(.single(nil))
themeName = previewTheme.name.string themeName = previewTheme.name.string
@ -95,7 +114,7 @@ public final class ThemePreviewController: ViewController {
} }
let titleView = CounterContollerTitleView(theme: self.previewTheme) let titleView = CounterContollerTitleView(theme: self.previewTheme)
titleView.title = CounterContollerTitle(title: themeName, counter: isPreview ? "" : " ") titleView.title = CounterContollerTitle(title: themeName, counter: hasInstallsCount ? " " : "")
self.navigationItem.titleView = titleView self.navigationItem.titleView = titleView
self.navigationItem.leftBarButtonItem = UIBarButtonItem(customView: UIView()) self.navigationItem.leftBarButtonItem = UIBarButtonItem(customView: UIView())

View File

@ -112,7 +112,7 @@ final class ThemePreviewControllerNode: ASDisplayNode, UIScrollViewDelegate {
self.blurredNode = BlurredImageNode() self.blurredNode = BlurredImageNode()
self.blurredNode.blurView.contentMode = .scaleAspectFill self.blurredNode.blurView.contentMode = .scaleAspectFill
self.toolbarNode = WallpaperGalleryToolbarNode(theme: self.previewTheme, strings: self.presentationData.strings) self.toolbarNode = WallpaperGalleryToolbarNode(theme: self.previewTheme, strings: self.presentationData.strings, doneButtonType: .set)
if case let .file(file) = previewTheme.chat.defaultWallpaper, file.id == 0 { if case let .file(file) = previewTheme.chat.defaultWallpaper, file.id == 0 {
self.remoteChatBackgroundNode.isHidden = false self.remoteChatBackgroundNode.isHidden = false

View File

@ -412,9 +412,6 @@ private func themeSettingsControllerEntries(presentationData: PresentationData,
} }
entries.append(.textSize(presentationData.theme, strings.Appearance_TextSizeSetting, textSizeValue)) entries.append(.textSize(presentationData.theme, strings.Appearance_TextSizeSetting, textSizeValue))
//entries.append(.fontSizeHeader(presentationData.theme, strings.Appearance_TextSize.uppercased()))
//entries.append(.fontSize(presentationData.theme, fontSize))
if !availableAppIcons.isEmpty { if !availableAppIcons.isEmpty {
entries.append(.iconHeader(presentationData.theme, strings.Appearance_AppIcon.uppercased())) entries.append(.iconHeader(presentationData.theme, strings.Appearance_AppIcon.uppercased()))
entries.append(.iconItem(presentationData.theme, presentationData.strings, availableAppIcons, currentAppIconName)) entries.append(.iconItem(presentationData.theme, presentationData.strings, availableAppIcons, currentAppIconName))
@ -431,6 +428,7 @@ private func themeSettingsControllerEntries(presentationData: PresentationData,
public func themeSettingsController(context: AccountContext, focusOnItemTag: ThemeSettingsEntryTag? = nil) -> ViewController { public func themeSettingsController(context: AccountContext, focusOnItemTag: ThemeSettingsEntryTag? = nil) -> ViewController {
var pushControllerImpl: ((ViewController) -> Void)? var pushControllerImpl: ((ViewController) -> Void)?
var presentControllerImpl: ((ViewController, Any?) -> Void)? var presentControllerImpl: ((ViewController, Any?) -> Void)?
var updateControllersImpl: ((([UIViewController]) -> [UIViewController]) -> Void)?
var presentInGlobalOverlayImpl: ((ViewController, Any?) -> Void)? var presentInGlobalOverlayImpl: ((ViewController, Any?) -> Void)?
var getNavigationControllerImpl: (() -> NavigationController?)? var getNavigationControllerImpl: (() -> NavigationController?)?
@ -552,13 +550,23 @@ public func themeSettingsController(context: AccountContext, focusOnItemTag: The
return return
} }
let controller = ThemeAccentColorController(context: context, mode: .edit(theme: theme, wallpaper: nil, defaultThemeReference: nil, completion: { result in let controller = ThemeAccentColorController(context: context, mode: .edit(theme: theme, wallpaper: nil, defaultThemeReference: nil, create: true, completion: { result in
let controller = editThemeController(context: context, mode: .create(result), navigateToChat: { peerId in let controller = editThemeController(context: context, mode: .create(result), navigateToChat: { peerId in
if let navigationController = getNavigationControllerImpl?() { if let navigationController = getNavigationControllerImpl?() {
context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: context, chatLocation: .peer(peerId))) context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: context, chatLocation: .peer(peerId)))
} }
}) })
pushControllerImpl?(controller) updateControllersImpl?({ controllers in
var controllers = controllers
controllers = controllers.filter { controller in
if controller is ThemeAccentColorController {
return false
}
return true
}
controllers.append(controller)
return controllers
})
})) }))
c.dismiss(completion: { c.dismiss(completion: {
@ -671,6 +679,11 @@ public func themeSettingsController(context: AccountContext, focusOnItemTag: The
presentControllerImpl = { [weak controller] c, a in presentControllerImpl = { [weak controller] c, a in
controller?.present(c, in: .window(.root), with: a, blockInteraction: true) controller?.present(c, in: .window(.root), with: a, blockInteraction: true)
} }
updateControllersImpl = { [weak controller] f in
if let navigationController = controller?.navigationController as? NavigationController {
navigationController.setViewControllers(f(navigationController.viewControllers), animated: true)
}
}
presentInGlobalOverlayImpl = { [weak controller] c, a in presentInGlobalOverlayImpl = { [weak controller] c, a in
controller?.presentInGlobalOverlay(c, with: a) controller?.presentInGlobalOverlay(c, with: a)
} }
@ -753,13 +766,23 @@ public func themeSettingsController(context: AccountContext, focusOnItemTag: The
return themeReference return themeReference
} }
|> deliverOnMainQueue).start(next: { themeReference in |> deliverOnMainQueue).start(next: { themeReference in
let controller = ThemeAccentColorController(context: context, mode: .edit(theme: presentationData.theme, wallpaper: presentationData.chatWallpaper, defaultThemeReference: themeReference, completion: { result in let controller = ThemeAccentColorController(context: context, mode: .edit(theme: presentationData.theme, wallpaper: presentationData.chatWallpaper, defaultThemeReference: themeReference, create: true, completion: { result in
let controller = editThemeController(context: context, mode: .create(result), navigateToChat: { peerId in let controller = editThemeController(context: context, mode: .create(result), navigateToChat: { peerId in
if let navigationController = getNavigationControllerImpl?() { if let navigationController = getNavigationControllerImpl?() {
context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: context, chatLocation: .peer(peerId))) context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: context, chatLocation: .peer(peerId)))
} }
}) })
pushControllerImpl?(controller) updateControllersImpl?({ controllers in
var controllers = controllers
controllers = controllers.filter { controller in
if controller is ThemeAccentColorController {
return false
}
return true
}
controllers.append(controller)
return controllers
})
})) }))
pushControllerImpl?(controller) pushControllerImpl?(controller)

View File

@ -259,7 +259,11 @@ private class ColorInputFieldNode: ASDisplayNode, UITextFieldDelegate {
@objc func textFieldDidEndEditing(_ textField: UITextField) { @objc func textFieldDidEndEditing(_ textField: UITextField) {
if !self.skipEndEditing { if !self.skipEndEditing {
self.setColor(self.previousColor ?? .black, isDefault: self.previousIsDefault ?? false) if let color = self.colorFromCurrentText() {
self.setColor(color)
} else {
self.setColor(self.previousColor ?? .black, isDefault: self.previousIsDefault ?? false)
}
} }
} }

View File

@ -351,7 +351,7 @@ public class WallpaperGalleryController: ViewController {
self.colorPanelNode = colorPanelNode self.colorPanelNode = colorPanelNode
overlayNode.addSubnode(colorPanelNode) overlayNode.addSubnode(colorPanelNode)
let toolbarNode = WallpaperGalleryToolbarNode(theme: presentationData.theme, strings: presentationData.strings) let toolbarNode = WallpaperGalleryToolbarNode(theme: presentationData.theme, strings: presentationData.strings, doneButtonType: .set)
self.toolbarNode = toolbarNode self.toolbarNode = toolbarNode
overlayNode.addSubnode(toolbarNode) overlayNode.addSubnode(toolbarNode)

View File

@ -4,8 +4,14 @@ import AsyncDisplayKit
import Display import Display
import TelegramPresentationData import TelegramPresentationData
enum WallpaperGalleryToolbarDoneButtonType {
case set
case proceed
}
final class WallpaperGalleryToolbarNode: ASDisplayNode { final class WallpaperGalleryToolbarNode: ASDisplayNode {
private var theme: PresentationTheme private var theme: PresentationTheme
private let doneButtonType: WallpaperGalleryToolbarDoneButtonType
private let cancelButton = HighlightableButtonNode() private let cancelButton = HighlightableButtonNode()
private let doneButton = HighlightableButtonNode() private let doneButton = HighlightableButtonNode()
@ -15,8 +21,9 @@ final class WallpaperGalleryToolbarNode: ASDisplayNode {
var cancel: (() -> Void)? var cancel: (() -> Void)?
var done: (() -> Void)? var done: (() -> Void)?
init(theme: PresentationTheme, strings: PresentationStrings) { init(theme: PresentationTheme, strings: PresentationStrings, doneButtonType: WallpaperGalleryToolbarDoneButtonType) {
self.theme = theme self.theme = theme
self.doneButtonType = doneButtonType
super.init() super.init()
@ -67,7 +74,7 @@ final class WallpaperGalleryToolbarNode: ASDisplayNode {
self.topSeparatorNode.backgroundColor = theme.rootController.tabBar.separatorColor self.topSeparatorNode.backgroundColor = theme.rootController.tabBar.separatorColor
self.cancelButton.setTitle(strings.Common_Cancel, with: Font.regular(17.0), with: theme.list.itemPrimaryTextColor, for: []) self.cancelButton.setTitle(strings.Common_Cancel, with: Font.regular(17.0), with: theme.list.itemPrimaryTextColor, for: [])
self.doneButton.setTitle(strings.Wallpaper_Set, with: Font.regular(17.0), with: theme.list.itemPrimaryTextColor, for: []) self.doneButton.setTitle(self.doneButtonType == .set ? strings.Wallpaper_Set : strings.Theme_Colors_Proceed, with: Font.regular(17.0), with: theme.list.itemPrimaryTextColor, for: [])
} }
func updateLayout(size: CGSize, layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { func updateLayout(size: CGSize, layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) {

View File

@ -631,6 +631,7 @@ final class ChatMessageInteractiveFileNode: ASDisplayNode {
} }
strongSelf.waveformNode.displaysAsynchronously = !presentationData.isPreview strongSelf.waveformNode.displaysAsynchronously = !presentationData.isPreview
strongSelf.statusNode?.displaysAsynchronously = !presentationData.isPreview
strongSelf.statusNode?.frame = progressFrame strongSelf.statusNode?.frame = progressFrame
strongSelf.progressFrame = progressFrame strongSelf.progressFrame = progressFrame
strongSelf.streamingCacheStatusFrame = streamingCacheStatusFrame strongSelf.streamingCacheStatusFrame = streamingCacheStatusFrame

View File

@ -110,7 +110,7 @@ final class ThemeUpdateManagerImpl: ThemeUpdateManager {
guard complete, let fullSizeData = fullSizeData else { guard complete, let fullSizeData = fullSizeData else {
return .complete() return .complete()
} }
accountManager.mediaBox.storeResourceData(file.file.resource.id, data: fullSizeData) accountManager.mediaBox.storeResourceData(file.file.resource.id, data: fullSizeData, synchronous: true)
return .single((.cloud(PresentationCloudTheme(theme: theme, resolvedWallpaper: wallpaper)), presentationTheme)) return .single((.cloud(PresentationCloudTheme(theme: theme, resolvedWallpaper: wallpaper)), presentationTheme))
} }
} else { } else {