From c6d5bbb1519a80dbd7b3a21649a5732d6ebca392 Mon Sep 17 00:00:00 2001 From: levlam Date: Thu, 8 Sep 2022 17:45:19 +0300 Subject: [PATCH] Remove class AvailableReaction. --- td/telegram/AvailableReaction.cpp | 19 ++++++------------- td/telegram/AvailableReaction.h | 18 ++---------------- td/telegram/MessagesManager.cpp | 23 ++++++++++++----------- td/telegram/MessagesManager.h | 9 ++++----- td/telegram/StickersManager.cpp | 3 +-- td/telegram/Td.cpp | 3 +-- td/telegram/files/FileDb.cpp | 3 +++ 7 files changed, 29 insertions(+), 49 deletions(-) diff --git a/td/telegram/AvailableReaction.cpp b/td/telegram/AvailableReaction.cpp index 91c4bcc2a..1b649aebb 100644 --- a/td/telegram/AvailableReaction.cpp +++ b/td/telegram/AvailableReaction.cpp @@ -10,20 +10,17 @@ namespace td { -AvailableReactionType get_reaction_type(const vector &available_reactions, const string &reaction) { +AvailableReactionType get_reaction_type(const vector &available_reactions, const string &reaction) { if (reaction[0] == '#') { return AvailableReactionType::NeedsPremium; } - for (auto &available_reaction : available_reactions) { - if (available_reaction.reaction_ == reaction) { - return AvailableReactionType::Available; - } + if (contains(available_reactions, reaction)) { + return AvailableReactionType::Available; } return AvailableReactionType::Unavailable; } -ChatReactions get_active_reactions(const ChatReactions &available_reactions, - const vector &active_reactions) { +ChatReactions get_active_reactions(const ChatReactions &available_reactions, const vector &active_reactions) { if (available_reactions.reactions_.empty()) { // fast path return available_reactions; @@ -33,15 +30,11 @@ ChatReactions get_active_reactions(const ChatReactions &available_reactions, vector result; for (const auto &active_reaction : active_reactions) { - if (td::contains(available_reactions.reactions_, active_reaction.reaction_)) { - result.push_back(active_reaction.reaction_); + if (td::contains(available_reactions.reactions_, active_reaction)) { + result.push_back(active_reaction); } } return ChatReactions(std::move(result)); } -bool operator==(const AvailableReaction &lhs, const AvailableReaction &rhs) { - return lhs.reaction_ == rhs.reaction_; -} - } // namespace td diff --git a/td/telegram/AvailableReaction.h b/td/telegram/AvailableReaction.h index becd0c782..7003ed9fa 100644 --- a/td/telegram/AvailableReaction.h +++ b/td/telegram/AvailableReaction.h @@ -13,24 +13,10 @@ namespace td { -struct AvailableReaction { - string reaction_; - - explicit AvailableReaction(const string &reaction) : reaction_(reaction) { - } -}; - -bool operator==(const AvailableReaction &lhs, const AvailableReaction &rhs); - -inline bool operator!=(const AvailableReaction &lhs, const AvailableReaction &rhs) { - return !(lhs == rhs); -} - enum class AvailableReactionType : int32 { Unavailable, Available, NeedsPremium }; -AvailableReactionType get_reaction_type(const vector &reactions, const string &reaction); +AvailableReactionType get_reaction_type(const vector &reactions, const string &reaction); -ChatReactions get_active_reactions(const ChatReactions &available_reactions, - const vector &active_reactions); +ChatReactions get_active_reactions(const ChatReactions &available_reactions, const vector &active_reactions); } // namespace td diff --git a/td/telegram/MessagesManager.cpp b/td/telegram/MessagesManager.cpp index 554ada32d..1b47b3ef4 100644 --- a/td/telegram/MessagesManager.cpp +++ b/td/telegram/MessagesManager.cpp @@ -7,6 +7,7 @@ #include "td/telegram/MessagesManager.h" #include "td/telegram/AuthManager.h" +#include "td/telegram/AvailableReaction.h" #include "td/telegram/ChainId.h" #include "td/telegram/ChannelType.h" #include "td/telegram/ChatId.h" @@ -8236,7 +8237,7 @@ void MessagesManager::hide_dialog_message_reactions(Dialog *d) { } } -void MessagesManager::set_active_reactions(vector active_reactions) { +void MessagesManager::set_active_reactions(vector active_reactions) { if (active_reactions == active_reactions_) { return; } @@ -8246,8 +8247,8 @@ void MessagesManager::set_active_reactions(vector active_reac active_reaction_pos_.clear(); bool is_changed = old_active_reactions.size() != active_reactions_.size(); for (size_t i = 0; i < active_reactions_.size(); i++) { - active_reaction_pos_[active_reactions_[i].reaction_] = i; - if (!is_changed && active_reactions_[i].reaction_ != old_active_reactions[i].reaction_) { + active_reaction_pos_[active_reactions_[i]] = i; + if (!is_changed && active_reactions_[i] != old_active_reactions[i]) { is_changed = true; } } @@ -24458,7 +24459,7 @@ void MessagesManager::on_get_scheduled_messages_from_database(DialogId dialog_id set_promises(promises); } -Result> MessagesManager::get_message_available_reactions(FullMessageId full_message_id) { +Result> MessagesManager::get_message_available_reactions(FullMessageId full_message_id) { auto dialog_id = full_message_id.get_dialog_id(); Dialog *d = get_dialog_force(dialog_id, "get_message_available_reactions"); if (d == nullptr) { @@ -24472,7 +24473,7 @@ Result> MessagesManager::get_message_available_reactio return get_message_available_reactions(d, m); } -vector MessagesManager::get_message_available_reactions(const Dialog *d, const Message *m) { +vector MessagesManager::get_message_available_reactions(const Dialog *d, const Message *m) { CHECK(d != nullptr); CHECK(m != nullptr); auto active_reactions = get_message_active_reactions(d, m); @@ -24490,7 +24491,7 @@ vector MessagesManager::get_message_available_reactions(const } } - vector result; + vector result; if (can_use_reactions) { int64 reactions_uniq_max = td_->option_manager_->get_option_integer("reactions_uniq_max", 11); bool can_add_new_reactions = @@ -24498,10 +24499,10 @@ vector MessagesManager::get_message_available_reactions(const // can add only active available reactions or remove previously set reaction for (const auto &active_reaction : active_reactions_) { // can add the reaction if it has already been used for the message or is available in the chat - bool is_set = (m->reactions != nullptr && m->reactions->get_reaction(active_reaction.reaction_) != nullptr); - if (is_set || (can_add_new_reactions && (active_reactions.allow_all_ || - td::contains(active_reactions.reactions_, active_reaction.reaction_)))) { - result.emplace_back(active_reaction.reaction_); + bool is_set = (m->reactions != nullptr && m->reactions->get_reaction(active_reaction) != nullptr); + if (is_set || (can_add_new_reactions && + (active_reactions.allow_all_ || td::contains(active_reactions.reactions_, active_reaction)))) { + result.push_back(active_reaction); } } } @@ -24511,7 +24512,7 @@ vector MessagesManager::get_message_available_reactions(const get_reaction_type(result, reaction.get_reaction()) == AvailableReactionType::Unavailable) { CHECK(!can_use_reactions || get_reaction_type(active_reactions_, reaction.get_reaction()) == AvailableReactionType::Unavailable); - result.emplace_back(reaction.get_reaction()); + result.push_back(reaction.get_reaction()); } } } diff --git a/td/telegram/MessagesManager.h b/td/telegram/MessagesManager.h index 7dc300c78..27bfa0913 100644 --- a/td/telegram/MessagesManager.h +++ b/td/telegram/MessagesManager.h @@ -8,7 +8,6 @@ #include "td/telegram/AccessRights.h" #include "td/telegram/AffectedHistory.h" -#include "td/telegram/AvailableReaction.h" #include "td/telegram/ChannelId.h" #include "td/telegram/ChatReactions.h" #include "td/telegram/DialogAction.h" @@ -538,7 +537,7 @@ class MessagesManager final : public Actor { void set_dialog_description(DialogId dialog_id, const string &description, Promise &&promise); - void set_active_reactions(vector active_reactions); + void set_active_reactions(vector active_reactions); void set_dialog_available_reactions(DialogId dialog_id, td_api::object_ptr &&available_reactions_ptr, @@ -806,7 +805,7 @@ class MessagesManager final : public Actor { vector get_dialog_scheduled_messages(DialogId dialog_id, bool force, bool ignore_result, Promise &&promise); - Result> get_message_available_reactions(FullMessageId full_message_id); + Result> get_message_available_reactions(FullMessageId full_message_id); void set_message_reaction(FullMessageId full_message_id, string reaction, bool is_big, bool add_to_recent, Promise &&promise); @@ -2688,7 +2687,7 @@ class MessagesManager final : public Actor { bool update_dialog_silent_send_message(Dialog *d, bool silent_send_message); - vector get_message_available_reactions(const Dialog *d, const Message *m); + vector get_message_available_reactions(const Dialog *d, const Message *m); void on_set_message_reaction(FullMessageId full_message_id, Result result, Promise promise); @@ -3735,7 +3734,7 @@ class MessagesManager final : public Actor { }; FlatHashMap pending_reactions_; - vector active_reactions_; + vector active_reactions_; FlatHashMap active_reaction_pos_; uint32 scheduled_messages_sync_generation_ = 1; diff --git a/td/telegram/StickersManager.cpp b/td/telegram/StickersManager.cpp index f080cacd9..196fec0ba 100644 --- a/td/telegram/StickersManager.cpp +++ b/td/telegram/StickersManager.cpp @@ -8,7 +8,6 @@ #include "td/telegram/AccessRights.h" #include "td/telegram/AuthManager.h" -#include "td/telegram/AvailableReaction.h" #include "td/telegram/ConfigManager.h" #include "td/telegram/ContactsManager.h" #include "td/telegram/DialogId.h" @@ -3699,7 +3698,7 @@ void StickersManager::load_reactions() { } void StickersManager::update_active_reactions() { - vector active_reactions; + vector active_reactions; for (auto &reaction : reactions_.reactions_) { if (reaction.is_active_) { active_reactions.emplace_back(reaction.reaction_); diff --git a/td/telegram/Td.cpp b/td/telegram/Td.cpp index 4f4299216..17fc0879d 100644 --- a/td/telegram/Td.cpp +++ b/td/telegram/Td.cpp @@ -5206,8 +5206,7 @@ void Td::on_request(uint64 id, const td_api::getMessageAvailableReactions &reque if (r_reactions.is_error()) { send_closure(actor_id(this), &Td::send_error, id, r_reactions.move_as_error()); } else { - auto reactions = - transform(r_reactions.ok(), [](auto &reaction) { return get_reaction_type_object(reaction.reaction_); }); + auto reactions = transform(r_reactions.ok(), [](auto &reaction) { return get_reaction_type_object(reaction); }); send_closure(actor_id(this), &Td::send_result, id, td_api::make_object(std::move(reactions))); } diff --git a/td/telegram/files/FileDb.cpp b/td/telegram/files/FileDb.cpp index efcc48b8d..d763a97bf 100644 --- a/td/telegram/files/FileDb.cpp +++ b/td/telegram/files/FileDb.cpp @@ -101,6 +101,7 @@ class FileDb final : public FileDbInterface { pmc.commit_transaction().ensure(); } + void store_file_data(FileDbId id, const string &file_data, const string &remote_key, const string &local_key, const string &generate_key) { auto &pmc = file_pmc(); @@ -125,6 +126,7 @@ class FileDb final : public FileDbInterface { pmc.commit_transaction().ensure(); } + void store_file_data_ref(FileDbId id, FileDbId new_id) { auto &pmc = file_pmc(); pmc.begin_write_transaction().ensure(); @@ -202,6 +204,7 @@ class FileDb final : public FileDbInterface { } send_closure(file_db_actor_, &FileDbActor::clear_file_data, id, remote_key, local_key, generate_key); } + void set_file_data(FileDbId id, const FileData &file_data, bool new_remote, bool new_local, bool new_generate) final { string remote_key; if (file_data.remote_.type() == RemoteFileLocation::Type::Full && new_remote) {