From 4ae098c3a8679062af616c5eeaaf99e517d31d24 Mon Sep 17 00:00:00 2001 From: levlam Date: Mon, 10 Jul 2023 15:36:38 +0300 Subject: [PATCH] Add StoryFullId to dependencies. --- td/telegram/Dependencies.cpp | 14 +++++++++++++- td/telegram/Dependencies.h | 4 ++++ td/telegram/MessageContent.cpp | 2 +- td/telegram/WebPagesManager.cpp | 7 +------ 4 files changed, 19 insertions(+), 8 deletions(-) diff --git a/td/telegram/Dependencies.cpp b/td/telegram/Dependencies.cpp index f3785957c..da372441f 100644 --- a/td/telegram/Dependencies.cpp +++ b/td/telegram/Dependencies.cpp @@ -8,6 +8,7 @@ #include "td/telegram/ContactsManager.h" #include "td/telegram/MessagesManager.h" +#include "td/telegram/StoryManager.h" #include "td/telegram/Td.h" #include "td/telegram/WebPagesManager.h" @@ -46,6 +47,13 @@ void Dependencies::add(WebPageId web_page_id) { } } +void Dependencies::add(StoryFullId story_full_id) { + if (story_full_id.is_valid()) { + add_dialog_and_dependencies(story_full_id.get_dialog_id()); + story_full_ids.insert(story_full_id); + } +} + void Dependencies::add_dialog_and_dependencies(DialogId dialog_id) { if (dialog_id.is_valid() && dialog_ids.insert(dialog_id).second) { add_dialog_dependencies(dialog_id); @@ -121,7 +129,11 @@ bool Dependencies::resolve_force(Td *td, const char *source) const { for (auto web_page_id : web_page_ids) { if (!td->web_pages_manager_->have_web_page_force(web_page_id)) { LOG(INFO) << "Can't find " << web_page_id << " from " << source; - success = false; + } + } + for (auto story_full_id : story_full_ids) { + if (!td->story_manager_->have_story_force(story_full_id)) { + LOG(INFO) << "Can't find " << story_full_id << " from " << source; } } return success; diff --git a/td/telegram/Dependencies.h b/td/telegram/Dependencies.h index 4ce8aba4e..caff8c56b 100644 --- a/td/telegram/Dependencies.h +++ b/td/telegram/Dependencies.h @@ -10,6 +10,7 @@ #include "td/telegram/ChatId.h" #include "td/telegram/DialogId.h" #include "td/telegram/SecretChatId.h" +#include "td/telegram/StoryFullId.h" #include "td/telegram/UserId.h" #include "td/telegram/WebPageId.h" @@ -26,6 +27,7 @@ class Dependencies { FlatHashSet secret_chat_ids; FlatHashSet dialog_ids; FlatHashSet web_page_ids; + FlatHashSet story_full_ids; public: void add(UserId user_id); @@ -38,6 +40,8 @@ class Dependencies { void add(WebPageId web_page_id); + void add(StoryFullId story_full_id); + void add_dialog_and_dependencies(DialogId dialog_id); void add_dialog_dependencies(DialogId dialog_id); diff --git a/td/telegram/MessageContent.cpp b/td/telegram/MessageContent.cpp index 68a343bc4..349007e48 100644 --- a/td/telegram/MessageContent.cpp +++ b/td/telegram/MessageContent.cpp @@ -6740,7 +6740,7 @@ void add_message_content_dependencies(Dependencies &dependencies, const MessageC break; case MessageContentType::Story: { const auto *content = static_cast(message_content); - dependencies.add_dialog_and_dependencies(content->story_full_id.get_dialog_id()); + dependencies.add(content->story_full_id); break; } default: diff --git a/td/telegram/WebPagesManager.cpp b/td/telegram/WebPagesManager.cpp index d1dd842ba..16dd02e3b 100644 --- a/td/telegram/WebPagesManager.cpp +++ b/td/telegram/WebPagesManager.cpp @@ -588,16 +588,11 @@ void WebPagesManager::update_web_page(unique_ptr web_page, WebPageId we if (!web_page->story_full_ids.empty()) { Dependencies dependencies; for (auto story_full_id : web_page->story_full_ids) { - dependencies.add_dialog_and_dependencies(story_full_id.get_dialog_id()); + dependencies.add(story_full_id); } if (!dependencies.resolve_force(td_, "update_web_page")) { web_page->story_full_ids = {}; } - for (auto story_full_id : web_page->story_full_ids) { - if (!td_->story_manager_->have_story_force(story_full_id)) { - LOG(INFO) << "Have unknown story " << story_full_id << " in " << web_page_id; - } - } } }