Add td_api::getStory.
This commit is contained in:
parent
11c353dc7f
commit
2fcdb02c39
@ -7180,6 +7180,9 @@ setPinnedChats chat_list:ChatList chat_ids:vector<int53> = Ok;
|
||||
readChatList chat_list:ChatList = Ok;
|
||||
|
||||
|
||||
//@description Returns a story @user_id Identifier of the user, which sent the story @story_id Story identifier
|
||||
getStory user_id:int53 story_id:int32 = Story;
|
||||
|
||||
//@description Sends a new story. Returns a temporary story with identifier 0
|
||||
//@content Content of the story
|
||||
//@caption Story caption; pass null to use an empty caption; 0-getOption("message_caption_length_max") characters
|
||||
|
@ -829,6 +829,44 @@ void StoryManager::reload_story(StoryFullId story_full_id, Promise<Unit> &&promi
|
||||
td_->create_handler<GetStoriesByIDQuery>(std::move(promise))->send(user_id, {story_full_id.get_story_id().get()});
|
||||
}
|
||||
|
||||
void StoryManager::get_story(DialogId owner_dialog_id, StoryId story_id,
|
||||
Promise<td_api::object_ptr<td_api::story>> &&promise) {
|
||||
if (!td_->messages_manager_->have_dialog_info_force(owner_dialog_id)) {
|
||||
return promise.set_error(Status::Error(400, "Story sender not found"));
|
||||
}
|
||||
if (!td_->messages_manager_->have_input_peer(owner_dialog_id, AccessRights::Read)) {
|
||||
return promise.set_error(Status::Error(400, "Can't access the story sender"));
|
||||
}
|
||||
if (!story_id.is_server()) {
|
||||
return promise.set_error(Status::Error(400, "Invalid story identifier specified"));
|
||||
}
|
||||
if (owner_dialog_id.get_type() != DialogType::User) {
|
||||
return promise.set_value(nullptr);
|
||||
}
|
||||
|
||||
StoryFullId story_full_id{owner_dialog_id, story_id};
|
||||
const Story *story = get_story(story_full_id);
|
||||
if (story != nullptr) {
|
||||
return promise.set_value(get_story_object(story_full_id, story));
|
||||
}
|
||||
|
||||
auto query_promise = PromiseCreator::lambda(
|
||||
[actor_id = actor_id(this), story_full_id, promise = std::move(promise)](Result<Unit> &&result) mutable {
|
||||
send_closure(actor_id, &StoryManager::do_get_story, story_full_id, std::move(result), std::move(promise));
|
||||
});
|
||||
td_->create_handler<GetStoriesByIDQuery>(std::move(query_promise))
|
||||
->send(owner_dialog_id.get_user_id(), {story_id.get()});
|
||||
}
|
||||
|
||||
void StoryManager::do_get_story(StoryFullId story_full_id, Result<Unit> &&result,
|
||||
Promise<td_api::object_ptr<td_api::story>> &&promise) {
|
||||
G()->ignore_result_if_closing(result);
|
||||
if (result.is_error()) {
|
||||
return promise.set_error(result.move_as_error());
|
||||
}
|
||||
promise.set_value(get_story_object(story_full_id));
|
||||
}
|
||||
|
||||
void StoryManager::send_story(td_api::object_ptr<td_api::InputStoryContent> &&input_story_content,
|
||||
td_api::object_ptr<td_api::formattedText> &&input_caption,
|
||||
td_api::object_ptr<td_api::userPrivacySettingRules> &&rules, bool is_pinned,
|
||||
|
@ -75,6 +75,8 @@ class StoryManager final : public Actor {
|
||||
StoryManager &operator=(StoryManager &&) = delete;
|
||||
~StoryManager() final;
|
||||
|
||||
void get_story(DialogId owner_dialog_id, StoryId story_id, Promise<td_api::object_ptr<td_api::story>> &&promise);
|
||||
|
||||
void send_story(td_api::object_ptr<td_api::InputStoryContent> &&input_story_content,
|
||||
td_api::object_ptr<td_api::formattedText> &&input_caption,
|
||||
td_api::object_ptr<td_api::userPrivacySettingRules> &&rules, bool is_pinned,
|
||||
@ -160,6 +162,9 @@ class StoryManager final : public Actor {
|
||||
|
||||
void change_story_files(StoryFullId story_full_id, const Story *story, const vector<FileId> &old_file_ids);
|
||||
|
||||
void do_get_story(StoryFullId story_full_id, Result<Unit> &&result,
|
||||
Promise<td_api::object_ptr<td_api::story>> &&promise);
|
||||
|
||||
void do_send_story(unique_ptr<PendingStory> &&pending_story, vector<int> bad_parts);
|
||||
|
||||
void on_upload_story(FileId file_id, telegram_api::object_ptr<telegram_api::InputFile> input_file);
|
||||
|
@ -121,6 +121,7 @@
|
||||
#include "td/telegram/StickersManager.h"
|
||||
#include "td/telegram/StickerType.h"
|
||||
#include "td/telegram/StorageManager.h"
|
||||
#include "td/telegram/StoryId.h"
|
||||
#include "td/telegram/StoryManager.h"
|
||||
#include "td/telegram/SuggestedAction.h"
|
||||
#include "td/telegram/Support.h"
|
||||
@ -5619,6 +5620,12 @@ void Td::on_request(uint64 id, td_api::editMessageSchedulingState &request) {
|
||||
std::move(request.scheduling_state_), std::move(promise));
|
||||
}
|
||||
|
||||
void Td::on_request(uint64 id, const td_api::getStory &request) {
|
||||
CHECK_IS_USER();
|
||||
CREATE_REQUEST_PROMISE();
|
||||
story_manager_->get_story(DialogId(UserId(request.user_id_)), StoryId(request.story_id_), std::move(promise));
|
||||
}
|
||||
|
||||
void Td::on_request(uint64 id, td_api::sendStory &request) {
|
||||
CHECK_IS_USER();
|
||||
CREATE_REQUEST_PROMISE();
|
||||
|
@ -786,6 +786,8 @@ class Td final : public Actor {
|
||||
|
||||
void on_request(uint64 id, td_api::editMessageSchedulingState &request);
|
||||
|
||||
void on_request(uint64 id, const td_api::getStory &request);
|
||||
|
||||
void on_request(uint64 id, td_api::sendStory &request);
|
||||
|
||||
void on_request(uint64 id, td_api::editStory &request);
|
||||
|
@ -3935,6 +3935,11 @@ class CliClient final : public Actor {
|
||||
send_request(td_api::make_object<td_api::setPinnedChats>(as_chat_list(op), as_chat_ids(args)));
|
||||
} else if (op == "rcl" || op == "rcla" || begins_with(op, "rcl-")) {
|
||||
send_request(td_api::make_object<td_api::readChatList>(as_chat_list(op)));
|
||||
} else if (op == "gst") {
|
||||
UserId user_id;
|
||||
StoryId story_id;
|
||||
get_args(args, user_id, story_id);
|
||||
send_request(td_api::make_object<td_api::getStory>(user_id, story_id));
|
||||
} else if (op == "ssp" || op == "sspp") {
|
||||
string photo;
|
||||
string caption;
|
||||
|
Loading…
Reference in New Issue
Block a user