diff --git a/td/telegram/StickerFormat.cpp b/td/telegram/StickerFormat.cpp index ddf05a5fa..88e8f573f 100644 --- a/td/telegram/StickerFormat.cpp +++ b/td/telegram/StickerFormat.cpp @@ -10,6 +10,23 @@ namespace td { +StickerFormat get_sticker_format(const td_api::object_ptr &type) { + CHECK(type != nullptr); + switch (type->get_id()) { + case td_api::stickerTypeStatic::ID: + return StickerFormat::Webp; + case td_api::stickerTypeAnimated::ID: + return StickerFormat::Tgs; + case td_api::stickerTypeVideo::ID: + return StickerFormat::Webm; + case td_api::stickerTypeMask::ID: + return StickerFormat::Webp; + default: + UNREACHABLE(); + return StickerFormat::Unknown; + } +} + StickerFormat get_sticker_format_by_mime_type(Slice mime_type) { if (mime_type == "application/x-tgsticker") { return StickerFormat::Tgs; diff --git a/td/telegram/StickerFormat.h b/td/telegram/StickerFormat.h index 6e1d537ee..b367a6cab 100644 --- a/td/telegram/StickerFormat.h +++ b/td/telegram/StickerFormat.h @@ -18,6 +18,8 @@ namespace td { // update store_sticker/store_sticker_set when this type changes enum class StickerFormat : int32 { Unknown, Webp, Tgs, Webm }; +StickerFormat get_sticker_format(const td_api::object_ptr &type); + StickerFormat get_sticker_format_by_mime_type(Slice mime_type); StickerFormat get_sticker_format_by_extension(Slice extension); diff --git a/td/telegram/StickersManager.cpp b/td/telegram/StickersManager.cpp index 4f70f09b6..804aa51bb 100644 --- a/td/telegram/StickersManager.cpp +++ b/td/telegram/StickersManager.cpp @@ -5794,19 +5794,7 @@ Result> StickersManager::prepare_i return Status::Error(400, "Sticker type must be non-empty"); } - switch (sticker->type_->get_id()) { - case td_api::stickerTypeStatic::ID: - return prepare_input_file(sticker->sticker_, StickerFormat::Webp, false); - case td_api::stickerTypeAnimated::ID: - return prepare_input_file(sticker->sticker_, StickerFormat::Tgs, false); - case td_api::stickerTypeVideo::ID: - return prepare_input_file(sticker->sticker_, StickerFormat::Webm, false); - case td_api::stickerTypeMask::ID: - return prepare_input_file(sticker->sticker_, StickerFormat::Webp, false); - default: - UNREACHABLE(); - return {}; - } + return prepare_input_file(sticker->sticker_, get_sticker_format(sticker->type_), false); } Result> StickersManager::prepare_input_file(