Select light / dark custom theme based on dialogsBg value.

This commit is contained in:
John Preston 2021-09-19 17:39:29 +03:00
parent e6c4b96c54
commit 54085c70a4
1 changed files with 11 additions and 1 deletions

View File

@ -25,6 +25,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
namespace Window {
namespace {
constexpr auto kDarkValueThreshold = 0.5;
[[nodiscard]] rpl::producer<QString> PeerThemeEmojiValue(
not_null<PeerData*> peer) {
return peer->session().changes().peerFlagsValue(
@ -49,9 +51,17 @@ namespace {
[[nodiscard]] auto MaybeCloudThemeValueFromPeer(
not_null<PeerData*> peer)
-> rpl::producer<std::optional<Data::CloudTheme>> {
auto isThemeDarkValue = rpl::single(
rpl::empty_value()
) | rpl::then(
style::PaletteChanged()
) | rpl::map([] {
return (st::dialogsBg->c.valueF() < kDarkValueThreshold);
}) | rpl::distinct_until_changed();
return rpl::combine(
MaybeChatThemeDataValueFromPeer(peer),
Theme::IsNightModeValue()
std::move(isThemeDarkValue)
) | rpl::map([](std::optional<Data::ChatTheme> theme, bool night) {
return !theme
? std::nullopt