// // Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2024 // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // #include "td/telegram/ReactionNotificationSettings.h" namespace td { ReactionNotificationSettings::ReactionNotificationSettings( td_api::object_ptr &¬ification_settings) { if (notification_settings == nullptr) { return; } message_reactions_ = ReactionNotificationsFrom(std::move(notification_settings->message_reaction_source_)); story_reactions_ = ReactionNotificationsFrom(std::move(notification_settings->story_reaction_source_)); sound_ = get_notification_sound(false, notification_settings->sound_id_); show_preview_ = notification_settings->show_preview_; } ReactionNotificationSettings::ReactionNotificationSettings( telegram_api::object_ptr &¬ify_settings) { if (notify_settings == nullptr) { return; } message_reactions_ = ReactionNotificationsFrom(std::move(notify_settings->messages_notify_from_)); story_reactions_ = ReactionNotificationsFrom(std::move(notify_settings->stories_notify_from_)); sound_ = get_notification_sound(notify_settings->sound_.get()); show_preview_ = notify_settings->show_previews_; } td_api::object_ptr ReactionNotificationSettings::get_reaction_notification_settings_object() const { return td_api::make_object( message_reactions_.get_reaction_notification_source_object(), story_reactions_.get_reaction_notification_source_object(), get_notification_sound_ringtone_id(sound_), show_preview_); } telegram_api::object_ptr ReactionNotificationSettings::get_input_reactions_notify_settings() const { int32 flags = 0; auto messages_notify_from = message_reactions_.get_input_reaction_notifications_from(); if (messages_notify_from != nullptr) { flags |= telegram_api::reactionsNotifySettings::MESSAGES_NOTIFY_FROM_MASK; } auto stories_notify_from = story_reactions_.get_input_reaction_notifications_from(); if (stories_notify_from != nullptr) { flags |= telegram_api::reactionsNotifySettings::STORIES_NOTIFY_FROM_MASK; } return telegram_api::make_object( flags, std::move(messages_notify_from), std::move(stories_notify_from), get_input_notification_sound(sound_, true), show_preview_); } void ReactionNotificationSettings::update_default_notification_sound(const ReactionNotificationSettings &other) { if (is_notification_sound_default(sound_) && is_notification_sound_default(other.sound_)) { sound_ = dup_notification_sound(other.sound_); } } bool operator==(const ReactionNotificationSettings &lhs, const ReactionNotificationSettings &rhs) { return lhs.message_reactions_ == rhs.message_reactions_ && lhs.story_reactions_ == rhs.story_reactions_ && are_equivalent_notification_sounds(lhs.sound_, rhs.sound_) && lhs.show_preview_ == rhs.show_preview_; } StringBuilder &operator<<(StringBuilder &string_builder, const ReactionNotificationSettings ¬ification_settings) { return string_builder << "ReactionNotificationSettings[messages: " << notification_settings.message_reactions_ << ", stories: " << notification_settings.story_reactions_ << ", sound: " << notification_settings.sound_ << ", show_preview: " << notification_settings.show_preview_ << ']'; } } // namespace td