Add more story_id checks.
This commit is contained in:
parent
0dc90cf820
commit
e978e86c50
@ -8499,7 +8499,7 @@ closeStory story_sender_chat_id:int53 story_id:int32 = Ok;
|
||||
//@description Returns reactions, which can be chosen for a story @row_size Number of reaction per row, 5-25
|
||||
getStoryAvailableReactions row_size:int32 = AvailableReactions;
|
||||
|
||||
//@description Changes chosen reaction on a story
|
||||
//@description Changes chosen reaction on a story that has already been sent
|
||||
//@story_sender_chat_id The identifier of the sender of the story
|
||||
//@story_id The identifier of the story
|
||||
//@reaction_type Type of the reaction to set; pass null to remove the reaction. `reactionTypeCustomEmoji` reactions can be used only by Telegram Premium users
|
||||
|
@ -2765,7 +2765,9 @@ void StoryManager::update_interaction_info() {
|
||||
auto story_full_id = it.first;
|
||||
auto &story_ids = split_story_ids[story_full_id.get_dialog_id()];
|
||||
if (story_ids.size() < 100) {
|
||||
story_ids.push_back(story_full_id.get_story_id());
|
||||
auto story_id = story_full_id.get_story_id();
|
||||
CHECK(story_id.is_server());
|
||||
story_ids.push_back(story_id);
|
||||
}
|
||||
}
|
||||
for (auto &story_ids : split_story_ids) {
|
||||
@ -2779,8 +2781,10 @@ void StoryManager::increment_story_views(DialogId owner_dialog_id, PendingStoryV
|
||||
const size_t MAX_VIEWED_STORIES = 200; // server-side limit
|
||||
while (!story_views.story_ids_.empty() && viewed_story_ids.size() < MAX_VIEWED_STORIES) {
|
||||
auto story_id_it = story_views.story_ids_.begin();
|
||||
viewed_story_ids.push_back(*story_id_it);
|
||||
auto story_id = *story_id_it;
|
||||
story_views.story_ids_.erase(story_id_it);
|
||||
CHECK(story_id.is_server());
|
||||
viewed_story_ids.push_back(story_id);
|
||||
}
|
||||
CHECK(!viewed_story_ids.empty());
|
||||
story_views.has_query_ = true;
|
||||
@ -2901,6 +2905,9 @@ void StoryManager::get_story_interactions(StoryId story_id, const string &query,
|
||||
if (limit <= 0) {
|
||||
return promise.set_error(Status::Error(400, "Parameter limit must be positive"));
|
||||
}
|
||||
if (!story_id.is_server()) {
|
||||
return promise.set_value(td_api::make_object<td_api::storyInteractions>());
|
||||
}
|
||||
|
||||
bool is_full = query.empty() && !only_contacts;
|
||||
bool is_first = is_full && offset.empty();
|
||||
@ -3002,6 +3009,9 @@ void StoryManager::get_dialog_story_interactions(StoryFullId story_full_id, Reac
|
||||
if (limit <= 0) {
|
||||
return promise.set_error(Status::Error(400, "Parameter limit must be positive"));
|
||||
}
|
||||
if (!story_full_id.get_story_id().is_server()) {
|
||||
return promise.set_value(td_api::make_object<td_api::storyInteractions>());
|
||||
}
|
||||
|
||||
auto query_promise = PromiseCreator::lambda(
|
||||
[actor_id = actor_id(this), story_full_id, promise = std::move(promise)](
|
||||
@ -3587,7 +3597,7 @@ StoryId StoryManager::on_get_story_info(DialogId owner_dialog_id, StoryInfo &&st
|
||||
return StoryId();
|
||||
}
|
||||
|
||||
td_->dialog_manager_->force_create_dialog(owner_dialog_id, "on_get_skipped_story");
|
||||
td_->dialog_manager_->force_create_dialog(owner_dialog_id, "on_get_story_info");
|
||||
|
||||
StoryFullId story_full_id{owner_dialog_id, story_id};
|
||||
Story *story = get_story_editable(story_full_id);
|
||||
@ -4719,7 +4729,7 @@ void StoryManager::send_story(DialogId dialog_id, td_api::object_ptr<td_api::Inp
|
||||
forward_from_story_full_id =
|
||||
StoryFullId(DialogId(from_story_full_id->sender_chat_id_), StoryId(from_story_full_id->story_id_));
|
||||
const Story *story = get_story(forward_from_story_full_id);
|
||||
if (story == nullptr) {
|
||||
if (story == nullptr || story->content_ == nullptr) {
|
||||
return promise.set_error(Status::Error(400, "Story to repost not found"));
|
||||
}
|
||||
if (story->noforwards_) {
|
||||
|
Loading…
Reference in New Issue
Block a user