diff --git a/Telegram/SourceFiles/data/data_peer.h b/Telegram/SourceFiles/data/data_peer.h index 0e93968e5..c393f829a 100644 --- a/Telegram/SourceFiles/data/data_peer.h +++ b/Telegram/SourceFiles/data/data_peer.h @@ -195,8 +195,8 @@ public: bool notifyChange( std::optional muteForSeconds, std::optional silentPosts, - std::optional soundIsNone) { - return _notify.change(muteForSeconds, silentPosts, soundIsNone); + std::optional sound) { + return _notify.change(muteForSeconds, silentPosts, sound); } [[nodiscard]] bool notifySettingsUnknown() const { return _notify.settingsUnknown(); @@ -204,8 +204,8 @@ public: [[nodiscard]] std::optional notifySilentPosts() const { return _notify.silentPosts(); } - [[nodiscard]] std::optional notifySoundIsNone() const { - return _notify.soundIsNone(); + [[nodiscard]] std::optional notifySound() const { + return _notify.sound(); } [[nodiscard]] MTPinputPeerNotifySettings notifySerialize() const { return _notify.serialize(); diff --git a/Telegram/SourceFiles/data/notify/data_notify_settings.cpp b/Telegram/SourceFiles/data/notify/data_notify_settings.cpp index b35de58fd..1079fb733 100644 --- a/Telegram/SourceFiles/data/notify/data_notify_settings.cpp +++ b/Telegram/SourceFiles/data/notify/data_notify_settings.cpp @@ -56,7 +56,7 @@ void NotifySettings::applyNotifySetting( return !peer->notifySettingsUnknown() && ((!peer->notifyMuteUntil() && settings.muteUntil()) || (!peer->notifySilentPosts() && settings.silentPosts()) - || (!peer->notifySoundIsNone() && settings.soundIsNone())); + || (!peer->notifySound() && settings.sound())); }; switch (notifyPeer.type()) { @@ -108,8 +108,8 @@ void NotifySettings::updateNotifySettings( not_null peer, std::optional muteForSeconds, std::optional silentPosts, - std::optional soundIsNone) { - if (peer->notifyChange(muteForSeconds, silentPosts, soundIsNone)) { + std::optional sound) { + if (peer->notifyChange(muteForSeconds, silentPosts, sound)) { updateNotifySettingsLocal(peer); peer->session().api().updateNotifySettingsDelayed(peer); } @@ -234,15 +234,15 @@ bool NotifySettings::silentPosts(not_null peer) const { return false; } -bool NotifySettings::soundIsNone(not_null peer) const { - if (const auto soundIsNone = peer->notifySoundIsNone()) { - return *soundIsNone; +NotifySound NotifySettings::sound(not_null peer) const { + if (const auto sound = peer->notifySound()) { + return *sound; } const auto &settings = defaultNotifySettings(peer); - if (const auto soundIsNone = settings.soundIsNone()) { - return *soundIsNone; + if (const auto sound = settings.sound()) { + return *sound; } - return false; + return {}; } bool NotifySettings::muteUnknown(not_null peer) const { @@ -264,11 +264,11 @@ bool NotifySettings::silentPostsUnknown( return defaultNotifySettings(peer).settingsUnknown(); } -bool NotifySettings::soundIsNoneUnknown( +bool NotifySettings::soundUnknown( not_null peer) const { if (peer->notifySettingsUnknown()) { return true; - } else if (const auto nonDefault = peer->notifySoundIsNone()) { + } else if (const auto nonDefault = peer->notifySound()) { return false; } return defaultNotifySettings(peer).settingsUnknown(); @@ -277,7 +277,7 @@ bool NotifySettings::soundIsNoneUnknown( bool NotifySettings::settingsUnknown(not_null peer) const { return muteUnknown(peer) || silentPostsUnknown(peer) - || soundIsNoneUnknown(peer); + || soundUnknown(peer); } rpl::producer<> NotifySettings::defaultUserNotifyUpdates() const { diff --git a/Telegram/SourceFiles/data/notify/data_notify_settings.h b/Telegram/SourceFiles/data/notify/data_notify_settings.h index 32181b007..732e8ee8c 100644 --- a/Telegram/SourceFiles/data/notify/data_notify_settings.h +++ b/Telegram/SourceFiles/data/notify/data_notify_settings.h @@ -29,7 +29,7 @@ public: not_null peer, std::optional muteForSeconds, std::optional silentPosts = std::nullopt, - std::optional soundIsNone = std::nullopt); + std::optional sound = std::nullopt); void resetNotifySettingsToDefault(not_null peer); [[nodiscard]] rpl::producer<> defaultUserNotifyUpdates() const; @@ -40,12 +40,11 @@ public: [[nodiscard]] bool isMuted(not_null peer) const; [[nodiscard]] bool silentPosts(not_null peer) const; - [[nodiscard]] bool soundIsNone(not_null peer) const; + [[nodiscard]] NotifySound sound(not_null peer) const; [[nodiscard]] bool muteUnknown(not_null peer) const; [[nodiscard]] bool silentPostsUnknown( not_null peer) const; - [[nodiscard]] bool soundIsNoneUnknown( - not_null peer) const; + [[nodiscard]] bool soundUnknown(not_null peer) const; private: [[nodiscard]] bool isMuted( diff --git a/Telegram/SourceFiles/data/notify/data_peer_notify_settings.cpp b/Telegram/SourceFiles/data/notify/data_peer_notify_settings.cpp index 79555109a..ac763a300 100644 --- a/Telegram/SourceFiles/data/notify/data_peer_notify_settings.cpp +++ b/Telegram/SourceFiles/data/notify/data_peer_notify_settings.cpp @@ -199,19 +199,16 @@ bool PeerNotifySettings::change(const MTPPeerNotifySettings &settings) { bool PeerNotifySettings::change( std::optional muteForSeconds, std::optional silentPosts, - std::optional soundIsNone) { - const auto notificationSound = soundIsNone - ? std::make_optional(NotifySound{ .none = (*soundIsNone) }) - : std::nullopt; - if (!muteForSeconds && !silentPosts && !soundIsNone) { + std::optional sound) { + if (!muteForSeconds && !silentPosts && !sound) { return false; } else if (_value) { - return _value->change(muteForSeconds, silentPosts, notificationSound); + return _value->change(muteForSeconds, silentPosts, sound); } using Flag = MTPDpeerNotifySettings::Flag; const auto flags = (muteForSeconds ? Flag::f_mute_until : Flag(0)) | (silentPosts ? Flag::f_silent : Flag(0)) - | (notificationSound ? Flag::f_other_sound : Flag(0)); + | (sound ? Flag::f_other_sound : Flag(0)); const auto muteUntil = muteForSeconds ? (base::unixtime::now() + *muteForSeconds) : 0; @@ -222,7 +219,7 @@ bool PeerNotifySettings::change( MTP_int(muteUntil), MTPNotificationSound(), MTPNotificationSound(), - SerializeSound(notificationSound))); + SerializeSound(sound))); } std::optional PeerNotifySettings::muteUntil() const { @@ -241,10 +238,10 @@ std::optional PeerNotifySettings::silentPosts() const { : std::nullopt; } -std::optional PeerNotifySettings::soundIsNone() const { - return (!_value || !_value->sound()) - ? std::nullopt - : std::make_optional(_value->sound()->none); +std::optional PeerNotifySettings::sound() const { + return _value + ? _value->sound() + : std::nullopt; } MTPinputPeerNotifySettings PeerNotifySettings::serialize() const { diff --git a/Telegram/SourceFiles/data/notify/data_peer_notify_settings.h b/Telegram/SourceFiles/data/notify/data_peer_notify_settings.h index dc6d43aff..f20c59164 100644 --- a/Telegram/SourceFiles/data/notify/data_peer_notify_settings.h +++ b/Telegram/SourceFiles/data/notify/data_peer_notify_settings.h @@ -35,12 +35,12 @@ public: bool change( std::optional muteForSeconds, std::optional silentPosts, - std::optional soundIsNone); + std::optional sound); bool settingsUnknown() const; std::optional muteUntil() const; std::optional silentPosts() const; - std::optional soundIsNone() const; + std::optional sound() const; MTPinputPeerNotifySettings serialize() const; ~PeerNotifySettings(); diff --git a/Telegram/SourceFiles/menu/menu_mute.cpp b/Telegram/SourceFiles/menu/menu_mute.cpp index 9b614c6ce..231b353b2 100644 --- a/Telegram/SourceFiles/menu/menu_mute.cpp +++ b/Telegram/SourceFiles/menu/menu_mute.cpp @@ -230,15 +230,16 @@ void FillMuteMenu( Args args) { const auto peer = args.peer; - const auto soundIsNone = peer->owner().notifySettings().soundIsNone(peer); + const auto soundIsNone = peer->owner().notifySettings().sound(peer).none; menu->addAction( soundIsNone ? tr::lng_mute_menu_sound_on(tr::now) : tr::lng_mute_menu_sound_off(tr::now), [=] { auto ¬ifySettings = peer->owner().notifySettings(); - const auto soundIsNone = notifySettings.soundIsNone(peer); - notifySettings.updateNotifySettings(peer, {}, {}, !soundIsNone); + auto sound = notifySettings.sound(peer); + sound.none = !sound.none; + notifySettings.updateNotifySettings(peer, {}, {}, sound); }, soundIsNone ? &st::menuIconSoundOn : &st::menuIconSoundOff); diff --git a/Telegram/SourceFiles/window/notifications_manager.cpp b/Telegram/SourceFiles/window/notifications_manager.cpp index 54ad82970..f140e3e82 100644 --- a/Telegram/SourceFiles/window/notifications_manager.cpp +++ b/Telegram/SourceFiles/window/notifications_manager.cpp @@ -180,8 +180,8 @@ System::SkipState System::computeSkipState( .silent = (forceSilent || !messageNotification || item->isSilent() - || history->owner().notifySettings().soundIsNone( - history->peer)), + || history->owner().notifySettings().sound( + history->peer).none), }; }; const auto showForMuted = messageNotification diff --git a/Telegram/SourceFiles/window/window_peer_menu.cpp b/Telegram/SourceFiles/window/window_peer_menu.cpp index 224faddad..8ec46e7ca 100644 --- a/Telegram/SourceFiles/window/window_peer_menu.cpp +++ b/Telegram/SourceFiles/window/window_peer_menu.cpp @@ -146,7 +146,7 @@ void PeerMenuAddMuteSubmenuAction( addAction(PeerMenuCallback::Args{ .text = tr::lng_context_mute(tr::now), .handler = nullptr, - .icon = peer->owner().notifySettings().soundIsNone(peer) + .icon = peer->owner().notifySettings().sound(peer).none ? &st::menuIconSilent : &st::menuIconMute, .fillSubmenu = [=](not_null menu) {