mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-05 06:33:57 +02:00
Select light / dark custom theme based on dialogsBg value.
This commit is contained in:
parent
e6c4b96c54
commit
54085c70a4
1 changed files with 11 additions and 1 deletions
|
@ -25,6 +25,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
namespace Window {
|
namespace Window {
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
|
constexpr auto kDarkValueThreshold = 0.5;
|
||||||
|
|
||||||
[[nodiscard]] rpl::producer<QString> PeerThemeEmojiValue(
|
[[nodiscard]] rpl::producer<QString> PeerThemeEmojiValue(
|
||||||
not_null<PeerData*> peer) {
|
not_null<PeerData*> peer) {
|
||||||
return peer->session().changes().peerFlagsValue(
|
return peer->session().changes().peerFlagsValue(
|
||||||
|
@ -49,9 +51,17 @@ namespace {
|
||||||
[[nodiscard]] auto MaybeCloudThemeValueFromPeer(
|
[[nodiscard]] auto MaybeCloudThemeValueFromPeer(
|
||||||
not_null<PeerData*> peer)
|
not_null<PeerData*> peer)
|
||||||
-> rpl::producer<std::optional<Data::CloudTheme>> {
|
-> 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(
|
return rpl::combine(
|
||||||
MaybeChatThemeDataValueFromPeer(peer),
|
MaybeChatThemeDataValueFromPeer(peer),
|
||||||
Theme::IsNightModeValue()
|
std::move(isThemeDarkValue)
|
||||||
) | rpl::map([](std::optional<Data::ChatTheme> theme, bool night) {
|
) | rpl::map([](std::optional<Data::ChatTheme> theme, bool night) {
|
||||||
return !theme
|
return !theme
|
||||||
? std::nullopt
|
? std::nullopt
|
||||||
|
|
Loading…
Add table
Reference in a new issue