mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-11-07 17:30:12 +00:00
Theme editing fixes
This commit is contained in:
parent
14e159807a
commit
97fc8311e5
@ -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";
|
||||||
|
|||||||
@ -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:
|
||||||
|
|||||||
@ -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))
|
||||||
|
|
||||||
|
|||||||
@ -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)
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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())
|
||||||
|
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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)
|
||||||
|
|
||||||
|
|||||||
@ -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)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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)
|
||||||
|
|
||||||
|
|||||||
@ -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) {
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -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
|
||||||
|
|||||||
Binary file not shown.
@ -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 {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user