// // Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026 // // 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) // #pragma once #include "td/telegram/StarGiftAttribute.h" #include "td/telegram/StarGiftAttributeRarity.hpp" #include "td/telegram/StickersManager.h" #include "td/telegram/StickersManager.hpp" #include "td/telegram/Td.h" #include "td/telegram/UserId.h" #include "td/utils/common.h" #include "td/utils/tl_helpers.h" namespace td { template void StarGiftAttributeSticker::store(StorerT &storer) const { CHECK(is_valid()); Td *td = storer.context()->td().get_actor_unsafe(); BEGIN_STORE_FLAGS(); STORE_FLAG(is_crafted_); END_STORE_FLAGS(); td::store(name_, storer); td->stickers_manager_->store_sticker(sticker_file_id_, false, storer, "StarGiftAttributeSticker"); td::store(rarity_, storer); } template void StarGiftAttributeSticker::parse(ParserT &parser) { Td *td = parser.context()->td().get_actor_unsafe(); BEGIN_PARSE_FLAGS(); PARSE_FLAG(is_crafted_); END_PARSE_FLAGS(); td::parse(name_, parser); sticker_file_id_ = td->stickers_manager_->parse_sticker(false, parser); td::parse(rarity_, parser); } template void StarGiftAttributeBackdrop::store(StorerT &storer) const { CHECK(is_valid()); bool has_id = id_ != 0; BEGIN_STORE_FLAGS(); STORE_FLAG(has_id); END_STORE_FLAGS(); td::store(name_, storer); td::store(center_color_, storer); td::store(edge_color_, storer); td::store(pattern_color_, storer); td::store(text_color_, storer); td::store(rarity_, storer); if (has_id) { td::store(id_, storer); } } template void StarGiftAttributeBackdrop::parse(ParserT &parser) { bool has_id; BEGIN_PARSE_FLAGS(); PARSE_FLAG(has_id); END_PARSE_FLAGS(); td::parse(name_, parser); td::parse(center_color_, parser); td::parse(edge_color_, parser); td::parse(pattern_color_, parser); td::parse(text_color_, parser); td::parse(rarity_, parser); if (has_id) { td::parse(id_, parser); } } template void StarGiftAttributeOriginalDetails::store(StorerT &storer) const { CHECK(is_valid()); bool has_sender_user_id = sender_dialog_id_.get_type() == DialogType::User; bool has_message = !message_.text.empty(); bool has_sender_dialog_id = sender_dialog_id_ != DialogId() && !has_sender_user_id; bool has_receiver_dialog_id = receiver_dialog_id_.get_type() != DialogType::User; BEGIN_STORE_FLAGS(); STORE_FLAG(has_sender_user_id); STORE_FLAG(has_message); STORE_FLAG(has_sender_dialog_id); STORE_FLAG(has_receiver_dialog_id); END_STORE_FLAGS(); if (has_sender_user_id) { td::store(sender_dialog_id_.get_user_id(), storer); } else if (has_sender_dialog_id) { td::store(sender_dialog_id_, storer); } if (has_receiver_dialog_id) { td::store(receiver_dialog_id_, storer); } else { td::store(receiver_dialog_id_.get_user_id(), storer); } td::store(date_, storer); if (has_message) { td::store(message_, storer); } } template void StarGiftAttributeOriginalDetails::parse(ParserT &parser) { bool has_sender_user_id; bool has_message; bool has_sender_dialog_id; bool has_receiver_dialog_id; BEGIN_PARSE_FLAGS(); PARSE_FLAG(has_sender_user_id); PARSE_FLAG(has_message); PARSE_FLAG(has_sender_dialog_id); PARSE_FLAG(has_receiver_dialog_id); END_PARSE_FLAGS(); if (has_sender_user_id) { UserId sender_user_id; td::parse(sender_user_id, parser); sender_dialog_id_ = DialogId(sender_user_id); } else if (has_sender_dialog_id) { td::parse(sender_dialog_id_, parser); } if (has_receiver_dialog_id) { td::parse(receiver_dialog_id_, parser); } else { UserId receiver_user_id; td::parse(receiver_user_id, parser); receiver_dialog_id_ = DialogId(receiver_user_id); } td::parse(date_, parser); if (has_message) { td::parse(message_, parser); } } } // namespace td