API update

This commit is contained in:
Ilya Laktyushin
2019-08-29 23:57:12 +03:00
parent 8231bb2e72
commit 569c3d6ac6
7 changed files with 141 additions and 25 deletions

View File

@@ -23,7 +23,6 @@ public final class ThemePreviewController: ViewController {
private let previewTheme: PresentationTheme
private let source: ThemePreviewSource
private let theme = Promise<TelegramTheme?>()
private let wallpaper = Promise<TelegramWallpaper>()
private var controllerNode: ThemePreviewControllerNode {
return self.displayNode as! ThemePreviewControllerNode
@@ -59,15 +58,6 @@ public final class ThemePreviewController: ViewController {
themeName = previewTheme.name.string
}
if case let .file(file) = previewTheme.chat.defaultWallpaper, file.id == 0 {
self.wallpaper.set(cachedWallpaper(account: context.account, slug: file.slug)
|> mapToSignal { wallpaper in
return .single(wallpaper?.wallpaper ?? .color(Int32(bitPattern: previewTheme.chatList.backgroundColor.rgb)))
})
} else {
self.wallpaper.set(.single(previewTheme.chat.defaultWallpaper))
}
if let author = previewTheme.author {
let titleView = CounterContollerTitleView(theme: self.previewTheme)
titleView.title = CounterContollerTitle(title: themeName, counter: author)
@@ -123,11 +113,14 @@ public final class ThemePreviewController: ViewController {
switch strongSelf.source {
case .theme, .slug:
theme = strongSelf.theme.get()
|> take(1)
|> map { theme in
theme = combineLatest(strongSelf.theme.get() |> take(1), strongSelf.controllerNode.wallpaperPromise.get() |> take(1))
|> map { theme, wallpaper in
if let theme = theme {
return .cloud(PresentationCloudTheme(theme: theme, resolvedWallpaper: nil))
if case let .file(file) = wallpaper, file.id != 0 {
return .cloud(PresentationCloudTheme(theme: theme, resolvedWallpaper: wallpaper))
} else {
return .cloud(PresentationCloudTheme(theme: theme, resolvedWallpaper: nil))
}
} else {
return nil
}
@@ -175,6 +168,16 @@ public final class ThemePreviewController: ViewController {
}
})
self.displayNodeDidLoad()
let previewTheme = self.previewTheme
if case let .file(file) = previewTheme.chat.defaultWallpaper, file.id == 0 {
self.controllerNode.wallpaperPromise.set(cachedWallpaper(account: self.context.account, slug: file.slug)
|> mapToSignal { wallpaper in
return .single(wallpaper?.wallpaper ?? .color(Int32(bitPattern: previewTheme.chatList.backgroundColor.rgb)))
})
} else {
self.controllerNode.wallpaperPromise.set(.single(previewTheme.chat.defaultWallpaper))
}
}
private func updateStrings() {