diff --git a/td/generate/scheme/td_api.tl b/td/generate/scheme/td_api.tl index 2b4802570..ef638fc3e 100644 --- a/td/generate/scheme/td_api.tl +++ b/td/generate/scheme/td_api.tl @@ -1319,9 +1319,10 @@ chatNotificationSettings use_default_mute_for:Bool mute_for:int32 use_default_so //@mute_for Time left before notifications will be unmuted, in seconds //@sound_id Identifier of the notification sound to be played; 0 if sound is disabled //@show_preview True, if message content must be displayed in notifications +//@mute_stories True, if story notifications are received without sound //@disable_pinned_message_notifications True, if notifications for incoming pinned messages will be created as for an ordinary unread message //@disable_mention_notifications True, if notifications for messages with mentions will be created as for an ordinary unread message -scopeNotificationSettings mute_for:int32 sound_id:int64 show_preview:Bool disable_pinned_message_notifications:Bool disable_mention_notifications:Bool = ScopeNotificationSettings; +scopeNotificationSettings mute_for:int32 sound_id:int64 show_preview:Bool mute_stories:Bool disable_pinned_message_notifications:Bool disable_mention_notifications:Bool = ScopeNotificationSettings; //@description Contains information about a message draft diff --git a/td/telegram/NotificationSettingsManager.cpp b/td/telegram/NotificationSettingsManager.cpp index b9696151b..d7de27580 100644 --- a/td/telegram/NotificationSettingsManager.cpp +++ b/td/telegram/NotificationSettingsManager.cpp @@ -540,7 +540,7 @@ void NotificationSettingsManager::init() { if (!channels_notification_settings_.is_synchronized && is_authorized) { channels_notification_settings_ = ScopeNotificationSettings( chats_notification_settings_.mute_until, dup_notification_sound(chats_notification_settings_.sound), - chats_notification_settings_.show_preview, false, false); + chats_notification_settings_.show_preview, chats_notification_settings_.mute_stories, false, false); channels_notification_settings_.is_synchronized = false; send_get_scope_notification_settings_query(NotificationSettingsScope::Channel, Promise<>()); } diff --git a/td/telegram/ScopeNotificationSettings.cpp b/td/telegram/ScopeNotificationSettings.cpp index e664ab7aa..5ef16f39b 100644 --- a/td/telegram/ScopeNotificationSettings.cpp +++ b/td/telegram/ScopeNotificationSettings.cpp @@ -15,17 +15,19 @@ namespace td { telegram_api::object_ptr ScopeNotificationSettings::get_input_peer_notify_settings() const { int32 flags = telegram_api::inputPeerNotifySettings::MUTE_UNTIL_MASK | - telegram_api::inputPeerNotifySettings::SHOW_PREVIEWS_MASK; + telegram_api::inputPeerNotifySettings::SHOW_PREVIEWS_MASK | + telegram_api::inputPeerNotifySettings::STORIES_MUTED_MASK; if (sound != nullptr) { flags |= telegram_api::inputPeerNotifySettings::SOUND_MASK; } return telegram_api::make_object( - flags, show_preview, false, mute_until, get_input_notification_sound(sound), false, false, nullptr); + flags, show_preview, false, mute_until, get_input_notification_sound(sound), mute_stories, false, nullptr); } StringBuilder &operator<<(StringBuilder &string_builder, const ScopeNotificationSettings ¬ification_settings) { return string_builder << "[" << notification_settings.mute_until << ", " << notification_settings.sound << ", " - << notification_settings.show_preview << ", " << notification_settings.is_synchronized << ", " + << notification_settings.show_preview << ", " << notification_settings.mute_stories << ", " + << notification_settings.is_synchronized << ", " << notification_settings.disable_pinned_message_notifications << ", " << notification_settings.disable_mention_notifications << "]"; } @@ -36,7 +38,7 @@ td_api::object_ptr get_scope_notification_set return td_api::make_object( max(0, notification_settings->mute_until - G()->unix_time()), get_notification_sound_ringtone_id(notification_settings->sound), notification_settings->show_preview, - notification_settings->disable_pinned_message_notifications, + notification_settings->mute_stories, notification_settings->disable_pinned_message_notifications, notification_settings->disable_mention_notifications); } @@ -61,7 +63,7 @@ Result get_scope_notification_settings( auto mute_until = get_mute_until(notification_settings->mute_for_); return ScopeNotificationSettings(mute_until, get_notification_sound(false, notification_settings->sound_id_), - notification_settings->show_preview_, + notification_settings->show_preview_, notification_settings->mute_stories_, notification_settings->disable_pinned_message_notifications_, notification_settings->disable_mention_notifications_); } @@ -77,8 +79,9 @@ ScopeNotificationSettings get_scope_notification_settings(tl_object_ptrshow_previews_; - return {mute_until, get_notification_sound(settings.get()), show_preview, old_disable_pinned_message_notifications, - old_disable_mention_notifications}; + auto mute_stories = settings->stories_muted_; + return {mute_until, get_notification_sound(settings.get()), show_preview, + mute_stories, old_disable_pinned_message_notifications, old_disable_mention_notifications}; } } // namespace td diff --git a/td/telegram/ScopeNotificationSettings.h b/td/telegram/ScopeNotificationSettings.h index 74eecde6e..cd6de7d86 100644 --- a/td/telegram/ScopeNotificationSettings.h +++ b/td/telegram/ScopeNotificationSettings.h @@ -21,6 +21,7 @@ class ScopeNotificationSettings { int32 mute_until = 0; unique_ptr sound; bool show_preview = true; + bool mute_stories = false; bool is_synchronized = false; // local settings @@ -30,10 +31,12 @@ class ScopeNotificationSettings { ScopeNotificationSettings() = default; ScopeNotificationSettings(int32 mute_until, unique_ptr &&sound, bool show_preview, - bool disable_pinned_message_notifications, bool disable_mention_notifications) + bool mute_stories, bool disable_pinned_message_notifications, + bool disable_mention_notifications) : mute_until(mute_until) , sound(std::move(sound)) , show_preview(show_preview) + , mute_stories(mute_stories) , is_synchronized(true) , disable_pinned_message_notifications(disable_pinned_message_notifications) , disable_mention_notifications(disable_mention_notifications) { diff --git a/td/telegram/ScopeNotificationSettings.hpp b/td/telegram/ScopeNotificationSettings.hpp index 25f2f3ce3..af24597a8 100644 --- a/td/telegram/ScopeNotificationSettings.hpp +++ b/td/telegram/ScopeNotificationSettings.hpp @@ -28,6 +28,7 @@ void store(const ScopeNotificationSettings ¬ification_settings, StorerT &stor STORE_FLAG(notification_settings.disable_pinned_message_notifications); STORE_FLAG(notification_settings.disable_mention_notifications); STORE_FLAG(has_ringtone_support); + STORE_FLAG(notification_settings.mute_stories); END_STORE_FLAGS(); if (is_muted) { store(notification_settings.mute_until, storer); @@ -52,6 +53,7 @@ void parse(ScopeNotificationSettings ¬ification_settings, ParserT &parser) { PARSE_FLAG(notification_settings.disable_pinned_message_notifications); PARSE_FLAG(notification_settings.disable_mention_notifications); PARSE_FLAG(has_ringtone_support); + PARSE_FLAG(notification_settings.mute_stories); END_PARSE_FLAGS(); (void)silent_send_message_ignored; if (is_muted) { diff --git a/td/telegram/cli.cpp b/td/telegram/cli.cpp index 9f50d9a59..c6a75c750 100644 --- a/td/telegram/cli.cpp +++ b/td/telegram/cli.cpp @@ -5487,15 +5487,16 @@ class CliClient final : public Actor { string mute_for; int64 sound_id; string show_preview; + string mute_stories; string disable_pinned_message_notifications; string disable_mention_notifications; - get_args(args, scope, mute_for, sound_id, show_preview, disable_pinned_message_notifications, + get_args(args, scope, mute_for, sound_id, show_preview, mute_stories, disable_pinned_message_notifications, disable_mention_notifications); if (op == "ssns") { send_request(td_api::make_object( as_notification_settings_scope(scope), td_api::make_object( - to_integer(mute_for), sound_id, as_bool(show_preview), + to_integer(mute_for), sound_id, as_bool(show_preview), as_bool(mute_stories), as_bool(disable_pinned_message_notifications), as_bool(disable_mention_notifications)))); } else { auto settings = td_api::make_object(