Add StoryManager::on_get_story_info.

This commit is contained in:
levlam 2023-07-15 02:46:50 +03:00
parent 887dbaf7ff
commit 32a867ed8f
2 changed files with 26 additions and 15 deletions

View File

@ -2337,9 +2337,18 @@ StoryId StoryManager::on_get_new_story(DialogId owner_dialog_id,
StoryId StoryManager::on_get_skipped_story(DialogId owner_dialog_id, StoryId StoryManager::on_get_skipped_story(DialogId owner_dialog_id,
telegram_api::object_ptr<telegram_api::storyItemSkipped> &&story_item) { telegram_api::object_ptr<telegram_api::storyItemSkipped> &&story_item) {
CHECK(story_item != nullptr); CHECK(story_item != nullptr);
StoryId story_id(story_item->id_); StoryInfo story_info;
story_info.story_id_ = StoryId(story_item->id_);
story_info.date_ = story_item->date_;
story_info.expire_date_ = story_item->expire_date_;
story_info.is_for_close_friends_ = story_item->close_friends_;
return on_get_story_info(owner_dialog_id, std::move(story_info));
}
StoryId StoryManager::on_get_story_info(DialogId owner_dialog_id, StoryInfo &&story_info) {
StoryId story_id = story_info.story_id_;
if (!story_id.is_server()) { if (!story_id.is_server()) {
LOG(ERROR) << "Receive " << to_string(story_item); LOG(ERROR) << "Receive " << story_id;
return StoryId(); return StoryId();
} }
if (deleted_story_full_ids_.count({owner_dialog_id, story_id}) > 0) { if (deleted_story_full_ids_.count({owner_dialog_id, story_id}) > 0) {
@ -2349,7 +2358,7 @@ StoryId StoryManager::on_get_skipped_story(DialogId owner_dialog_id,
td_->messages_manager_->force_create_dialog(owner_dialog_id, "on_get_skipped_story"); td_->messages_manager_->force_create_dialog(owner_dialog_id, "on_get_skipped_story");
StoryFullId story_full_id{owner_dialog_id, story_id}; StoryFullId story_full_id{owner_dialog_id, story_id};
Story *story = get_story_force(story_full_id, "on_get_skipped_story"); Story *story = get_story_editable(story_full_id);
if (story == nullptr) { if (story == nullptr) {
auto s = make_unique<Story>(); auto s = make_unique<Story>();
story = s.get(); story = s.get();
@ -2360,21 +2369,21 @@ StoryId StoryManager::on_get_skipped_story(DialogId owner_dialog_id,
} }
CHECK(story != nullptr); CHECK(story != nullptr);
if (story_item->date_ <= 0) { if (story_info.date_ <= 0) {
LOG(ERROR) << "Receive " << story_full_id << " sent at " << story_item->date_; LOG(ERROR) << "Receive " << story_full_id << " sent at " << story_info.date_;
story_item->date_ = 1; story_info.date_ = 1;
} }
if (story_item->expire_date_ <= story_item->date_) { if (story_info.expire_date_ <= story_info.date_) {
LOG(ERROR) << "Receive " << story_full_id << " sent at " << story_item->date_ << ", but expired at " LOG(ERROR) << "Receive " << story_full_id << " sent at " << story_info.date_ << ", but expired at "
<< story_item->expire_date_; << story_info.expire_date_;
story_item->expire_date_ = story_item->date_ + 1; story_info.expire_date_ = story_info.date_ + 1;
} }
if (story->date_ != story_item->date_ || story->expire_date_ != story_item->expire_date_ || if (story->date_ != story_info.date_ || story->expire_date_ != story_info.expire_date_ ||
story->is_for_close_friends_ != story_item->close_friends_) { story->is_for_close_friends_ != story_info.is_for_close_friends_) {
story->date_ = story_item->date_; story->date_ = story_info.date_;
story->expire_date_ = story_item->expire_date_; story->expire_date_ = story_info.expire_date_;
story->is_for_close_friends_ = story_item->close_friends_; story->is_for_close_friends_ = story_info.is_for_close_friends_;
on_story_changed(story_full_id, story, true, true); on_story_changed(story_full_id, story, true, true);
} }
return story_id; return story_id;

View File

@ -343,6 +343,8 @@ class StoryManager final : public Actor {
void unregister_story_global_id(const Story *story); void unregister_story_global_id(const Story *story);
StoryId on_get_story_info(DialogId owner_dialog_id, StoryInfo &&story_info);
StoryInfo get_story_info(StoryFullId story_full_id) const; StoryInfo get_story_info(StoryFullId story_full_id) const;
td_api::object_ptr<td_api::storyInfo> get_story_info_object(StoryFullId story_full_id) const; td_api::object_ptr<td_api::storyInfo> get_story_info_object(StoryFullId story_full_id) const;