Use error code returned by get_input_file_id.

This commit is contained in:
levlam 2023-02-09 18:31:02 +03:00
parent 7b759a06bc
commit 5a39bb4952
11 changed files with 45 additions and 101 deletions

View File

@ -673,12 +673,10 @@ void AnimationsManager::add_saved_animation(const tl_object_ptr<td_api::InputFil
return;
}
auto r_file_id = td_->file_manager_->get_input_file_id(FileType::Animation, input_file, DialogId(), false, false);
if (r_file_id.is_error()) {
return promise.set_error(Status::Error(400, r_file_id.error().message())); // TODO do not drop error code
}
TRY_RESULT_PROMISE(promise, file_id,
td_->file_manager_->get_input_file_id(FileType::Animation, input_file, DialogId(), false, false));
add_saved_animation_impl(r_file_id.ok(), true, std::move(promise));
add_saved_animation_impl(file_id, true, std::move(promise));
}
void AnimationsManager::send_save_gif_query(FileId animation_id, bool unsave, Promise<Unit> &&promise) {
@ -787,12 +785,9 @@ void AnimationsManager::remove_saved_animation(const tl_object_ptr<td_api::Input
return;
}
auto r_file_id = td_->file_manager_->get_input_file_id(FileType::Animation, input_file, DialogId(), false, false);
if (r_file_id.is_error()) {
return promise.set_error(Status::Error(400, r_file_id.error().message())); // TODO do not drop error code
}
TRY_RESULT_PROMISE(promise, file_id,
td_->file_manager_->get_input_file_id(FileType::Animation, input_file, DialogId(), false, false));
FileId file_id = r_file_id.ok();
auto is_equal = [animation_id = file_id](FileId file_id) {
return file_id == animation_id ||
(file_id.get_remote() == animation_id.get_remote() && animation_id.get_remote() != 0);

View File

@ -564,11 +564,7 @@ void BackgroundManager::send_update_selected_background(bool for_dark_theme) con
}
Result<FileId> BackgroundManager::prepare_input_file(const tl_object_ptr<td_api::InputFile> &input_file) {
auto r_file_id = td_->file_manager_->get_input_file_id(FileType::Background, input_file, {}, false, false);
if (r_file_id.is_error()) {
return Status::Error(400, r_file_id.error().message());
}
auto file_id = r_file_id.move_as_ok();
TRY_RESULT(file_id, td_->file_manager_->get_input_file_id(FileType::Background, input_file, {}, false, false));
FileView file_view = td_->file_manager_->get_file_view(file_id);
if (file_view.is_encrypted()) {

View File

@ -358,11 +358,8 @@ void CallActor::send_call_log(td_api::object_ptr<td_api::InputFile> log_file, Pr
}
auto *file_manager = G()->td().get_actor_unsafe()->file_manager_.get();
auto r_file_id = file_manager->get_input_file_id(FileType::CallLog, log_file, DialogId(), false, false);
if (r_file_id.is_error()) {
return promise.set_error(Status::Error(400, r_file_id.error().message()));
}
auto file_id = r_file_id.move_as_ok();
TRY_RESULT_PROMISE(promise, file_id,
file_manager->get_input_file_id(FileType::CallLog, log_file, DialogId(), false, false));
FileView file_view = file_manager->get_file_view(file_id);
if (file_view.is_encrypted()) {

View File

@ -7158,12 +7158,8 @@ void ContactsManager::set_profile_photo_impl(UserId user_id,
}
auto file_type = is_animation ? FileType::Animation : FileType::Photo;
auto r_file_id = td_->file_manager_->get_input_file_id(file_type, *input_file, DialogId(user_id), false, false);
if (r_file_id.is_error()) {
// TODO promise.set_error(std::move(status));
return promise.set_error(Status::Error(400, r_file_id.error().message()));
}
FileId file_id = r_file_id.ok();
TRY_RESULT_PROMISE(promise, file_id,
td_->file_manager_->get_input_file_id(file_type, *input_file, DialogId(user_id), false, false));
CHECK(file_id.is_valid());
upload_profile_photo(user_id, td_->file_manager_->dup_file_id(file_id, "set_profile_photo_impl"), is_fallback,

View File

@ -861,12 +861,8 @@ Result<tl_object_ptr<telegram_api::InputBotInlineResult>> InlineQueriesManager::
}
if (file_type != FileType::Temp && content_url.find('.') == string::npos) {
auto r_file_id = td_->file_manager_->get_input_file_id(
file_type, make_tl_object<td_api::inputFileRemote>(content_url), DialogId(), false, false);
if (r_file_id.is_error()) {
return Status::Error(400, r_file_id.error().message());
}
auto file_id = r_file_id.ok();
TRY_RESULT(file_id, td_->file_manager_->get_input_file_id(
file_type, make_tl_object<td_api::inputFileRemote>(content_url), DialogId(), false, false));
FileView file_view = td_->file_manager_->get_file_view(file_id);
CHECK(file_view.has_remote_location());
if (file_view.is_encrypted()) {

View File

@ -2298,10 +2298,7 @@ Result<InputMessageContent> get_input_message_content(
FileId file_id;
if (have_file) {
if (r_file_id.is_error()) {
return Status::Error(400, r_file_id.error().message());
}
file_id = r_file_id.ok();
TRY_RESULT_ASSIGN(file_id, std::move(r_file_id));
CHECK(file_id.is_valid());
}

View File

@ -30108,12 +30108,8 @@ void MessagesManager::import_messages(DialogId dialog_id, const td_api::object_p
Promise<Unit> &&promise) {
TRY_STATUS_PROMISE(promise, can_import_messages(dialog_id));
auto r_file_id = td_->file_manager_->get_input_file_id(FileType::Document, message_file, dialog_id, false, false);
if (r_file_id.is_error()) {
// TODO TRY_RESULT_PROMISE(promise, ...);
return promise.set_error(Status::Error(400, r_file_id.error().message()));
}
FileId file_id = r_file_id.ok();
TRY_RESULT_PROMISE(promise, file_id,
td_->file_manager_->get_input_file_id(FileType::Document, message_file, dialog_id, false, false));
vector<FileId> attached_file_ids;
attached_file_ids.reserve(attached_files.size());
@ -30125,12 +30121,9 @@ void MessagesManager::import_messages(DialogId dialog_id, const td_api::object_p
LOG(INFO) << "Skip attached file of type " << file_type;
continue;
}
auto r_attached_file_id = td_->file_manager_->get_input_file_id(file_type, attached_file, dialog_id, false, false);
if (r_attached_file_id.is_error()) {
// TODO TRY_RESULT_PROMISE(promise, ...);
return promise.set_error(Status::Error(400, r_attached_file_id.error().message()));
}
attached_file_ids.push_back(r_attached_file_id.ok());
TRY_RESULT_PROMISE(promise, attached_file_id,
td_->file_manager_->get_input_file_id(file_type, attached_file, dialog_id, false, false));
attached_file_ids.push_back(attached_file_id);
}
upload_imported_messages(dialog_id, td_->file_manager_->dup_file_id(file_id, "import_messages"),
@ -34681,12 +34674,8 @@ void MessagesManager::set_dialog_photo(DialogId dialog_id, const tl_object_ptr<t
}
auto file_type = is_animation ? FileType::Animation : FileType::Photo;
auto r_file_id = td_->file_manager_->get_input_file_id(file_type, *input_file, dialog_id, true, false);
if (r_file_id.is_error()) {
// TODO promise.set_error(std::move(status));
return promise.set_error(Status::Error(400, r_file_id.error().message()));
}
FileId file_id = r_file_id.ok();
TRY_RESULT_PROMISE(promise, file_id,
td_->file_manager_->get_input_file_id(file_type, *input_file, dialog_id, true, false));
if (!file_id.is_valid()) {
send_edit_dialog_photo_query(dialog_id, FileId(), make_tl_object<telegram_api::inputChatPhotoEmpty>(),
std::move(promise));

View File

@ -885,12 +885,8 @@ void NotificationSettingsManager::add_saved_ringtone(td_api::object_ptr<td_api::
return;
}
auto r_file_id = td_->file_manager_->get_input_file_id(FileType::Ringtone, input_file, DialogId(), false, false);
if (r_file_id.is_error()) {
// TODO promise.set_error(r_file_id.move_as_error());
return promise.set_error(Status::Error(400, r_file_id.error().message()));
}
FileId file_id = r_file_id.ok();
TRY_RESULT_PROMISE(promise, file_id,
td_->file_manager_->get_input_file_id(FileType::Ringtone, input_file, DialogId(), false, false));
auto file_view = td_->file_manager_->get_file_view(file_id);
CHECK(!file_view.empty());
if (file_view.size() > td_->option_manager_->get_option_integer("notification_sound_size_max")) {

View File

@ -7902,11 +7902,7 @@ Result<std::tuple<FileId, bool, bool, StickerFormat>> StickersManager::prepare_i
Result<std::tuple<FileId, bool, bool, StickerFormat>> StickersManager::prepare_input_file(
const tl_object_ptr<td_api::InputFile> &input_file, StickerFormat format, StickerType type, bool for_thumbnail) {
auto file_type = format == StickerFormat::Tgs ? FileType::Sticker : FileType::Document;
auto r_file_id = td_->file_manager_->get_input_file_id(file_type, input_file, DialogId(), for_thumbnail, false);
if (r_file_id.is_error()) {
return Status::Error(400, r_file_id.error().message());
}
auto file_id = r_file_id.move_as_ok();
TRY_RESULT(file_id, td_->file_manager_->get_input_file_id(file_type, input_file, DialogId(), for_thumbnail, false));
if (file_id.empty()) {
return std::make_tuple(FileId(), false, false, StickerFormat::Unknown);
}
@ -8518,12 +8514,8 @@ void StickersManager::on_sticker_set_thumbnail_uploaded(int64 random_id, Result<
Result<StickersManager::StickerInputDocument> StickersManager::get_sticker_input_document(
const tl_object_ptr<td_api::InputFile> &sticker) const {
auto r_file_id = td_->file_manager_->get_input_file_id(FileType::Sticker, sticker, DialogId(), false, false);
if (r_file_id.is_error()) {
return Status::Error(400, r_file_id.error().message()); // TODO do not drop error code
}
TRY_RESULT(file_id, td_->file_manager_->get_input_file_id(FileType::Sticker, sticker, DialogId(), false, false));
auto file_id = r_file_id.move_as_ok();
auto file_view = td_->file_manager_->get_file_view(file_id);
if (!file_view.has_remote_location() || !file_view.main_remote_location().is_document() ||
file_view.main_remote_location().is_web()) {
@ -8911,12 +8903,10 @@ void StickersManager::add_recent_sticker(bool is_attached, const tl_object_ptr<t
return;
}
auto r_file_id = td_->file_manager_->get_input_file_id(FileType::Sticker, input_file, DialogId(), false, false);
if (r_file_id.is_error()) {
return promise.set_error(Status::Error(400, r_file_id.error().message())); // TODO do not drop error code
}
TRY_RESULT_PROMISE(promise, file_id,
td_->file_manager_->get_input_file_id(FileType::Sticker, input_file, DialogId(), false, false));
add_recent_sticker_impl(is_attached, r_file_id.ok(), true, std::move(promise));
add_recent_sticker_impl(is_attached, file_id, true, std::move(promise));
}
void StickersManager::send_save_recent_sticker_query(bool is_attached, FileId sticker_id, bool unsave,
@ -9018,13 +9008,10 @@ void StickersManager::remove_recent_sticker(bool is_attached, const tl_object_pt
return;
}
auto r_file_id = td_->file_manager_->get_input_file_id(FileType::Sticker, input_file, DialogId(), false, false);
if (r_file_id.is_error()) {
return promise.set_error(Status::Error(400, r_file_id.error().message())); // TODO do not drop error code
}
TRY_RESULT_PROMISE(promise, file_id,
td_->file_manager_->get_input_file_id(FileType::Sticker, input_file, DialogId(), false, false));
vector<FileId> &sticker_ids = recent_sticker_ids_[is_attached];
FileId file_id = r_file_id.ok();
if (!td::remove(sticker_ids, file_id)) {
return promise.set_value(Unit());
}
@ -9305,12 +9292,10 @@ void StickersManager::add_favorite_sticker(const tl_object_ptr<td_api::InputFile
return;
}
auto r_file_id = td_->file_manager_->get_input_file_id(FileType::Sticker, input_file, DialogId(), false, false);
if (r_file_id.is_error()) {
return promise.set_error(Status::Error(400, r_file_id.error().message())); // TODO do not drop error code
}
TRY_RESULT_PROMISE(promise, file_id,
td_->file_manager_->get_input_file_id(FileType::Sticker, input_file, DialogId(), false, false));
add_favorite_sticker_impl(r_file_id.ok(), true, std::move(promise));
add_favorite_sticker_impl(file_id, true, std::move(promise));
}
void StickersManager::send_fave_sticker_query(FileId sticker_id, bool unsave, Promise<Unit> &&promise) {
@ -9408,12 +9393,9 @@ void StickersManager::remove_favorite_sticker(const tl_object_ptr<td_api::InputF
return;
}
auto r_file_id = td_->file_manager_->get_input_file_id(FileType::Sticker, input_file, DialogId(), false, false);
if (r_file_id.is_error()) {
return promise.set_error(Status::Error(400, r_file_id.error().message())); // TODO do not drop error code
}
TRY_RESULT_PROMISE(promise, file_id,
td_->file_manager_->get_input_file_id(FileType::Sticker, input_file, DialogId(), false, false));
FileId file_id = r_file_id.ok();
auto is_equal = [sticker_id = file_id](FileId file_id) {
return file_id == sticker_id || (file_id.get_remote() == sticker_id.get_remote() && sticker_id.get_remote() != 0);
};
@ -9469,7 +9451,7 @@ vector<string> StickersManager::get_sticker_emojis(const tl_object_ptr<td_api::I
Promise<Unit> &&promise) {
auto r_file_id = td_->file_manager_->get_input_file_id(FileType::Sticker, input_file, DialogId(), false, false);
if (r_file_id.is_error()) {
promise.set_error(Status::Error(400, r_file_id.error().message())); // TODO do not drop error code
promise.set_error(r_file_id.move_as_error());
return {};
}

View File

@ -6686,7 +6686,7 @@ void Td::on_request(uint64 id, td_api::preliminaryUploadFile &request) {
auto r_file_id = file_manager_->get_input_file_id(file_type, request.file_, DialogId(), false, is_secret,
!is_secure && !is_secret, is_secure);
if (r_file_id.is_error()) {
return send_error_raw(id, 400, r_file_id.error().message());
return send_error_raw(id, r_file_id.error().code(), r_file_id.error().message());
}
auto file_id = r_file_id.ok();
auto upload_file_id = file_manager_->dup_file_id(file_id, "preliminaryUploadFile");

View File

@ -1529,12 +1529,12 @@ void FileManager::do_cancel_generate(FileNodePtr node) {
Status FileManager::merge(FileId x_file_id, FileId y_file_id, bool no_sync) {
if (!x_file_id.is_valid()) {
return Status::Error("First file_id is invalid");
return Status::Error(400, "First file_id is invalid");
}
FileNodePtr x_node = no_sync ? get_file_node(x_file_id) : get_sync_file_node(x_file_id);
if (!x_node) {
return Status::Error(PSLICE() << "Can't merge files. First identifier is invalid: " << x_file_id << " and "
<< y_file_id);
return Status::Error(
400, PSLICE() << "Can't merge files. First identifier is invalid: " << x_file_id << " and " << y_file_id);
}
if (!y_file_id.is_valid()) {
@ -1543,8 +1543,8 @@ Status FileManager::merge(FileId x_file_id, FileId y_file_id, bool no_sync) {
}
FileNodePtr y_node = get_file_node(y_file_id);
if (!y_node) {
return Status::Error(PSLICE() << "Can't merge files. Second identifier is invalid: " << x_file_id << " and "
<< y_file_id);
return Status::Error(
400, PSLICE() << "Can't merge files. Second identifier is invalid: " << x_file_id << " and " << y_file_id);
}
if (x_file_id == x_node->upload_pause_) {
@ -1608,8 +1608,8 @@ Status FileManager::merge(FileId x_file_id, FileId y_file_id, bool no_sync) {
if (size_i == -1) {
try_flush_node_info(x_node, "merge 2");
try_flush_node_info(y_node, "merge 3");
return Status::Error(PSLICE() << "Can't merge files. Different size: " << x_node->size_ << " and "
<< y_node->size_);
return Status::Error(
400, PSLICE() << "Can't merge files. Different size: " << x_node->size_ << " and " << y_node->size_);
}
if (encryption_key_i == -1) {
if (nodes[remote_i]->remote_.full && nodes[local_i]->local_.type() != LocalFileLocation::Type::Partial) {
@ -1618,7 +1618,7 @@ Status FileManager::merge(FileId x_file_id, FileId y_file_id, bool no_sync) {
} else {
try_flush_node_info(x_node, "merge 4");
try_flush_node_info(y_node, "merge 5");
return Status::Error("Can't merge files. Different encryption keys");
return Status::Error(400, "Can't merge files. Different encryption keys");
}
}
@ -3337,7 +3337,7 @@ Result<FileId> FileManager::get_input_file_id(FileType type, const tl_object_ptr
}
default:
UNREACHABLE();
return Status::Error(500, "Unreachable");
return FileId();
}
}();