Skip to content

Commit 6d3ecbd

Browse files
committed
Add linkPreviewTypeEmbeddedAnimationPlayer.animation.
1 parent ce554f1 commit 6d3ecbd

File tree

2 files changed

+23
-23
lines changed

2 files changed

+23
-23
lines changed

‎td/generate/scheme/td_api.tl‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3993,11 +3993,12 @@ linkPreviewTypeDocument document:document = LinkPreviewType;
39933993

39943994
//@description The link is a link to an animation player
39953995
//@url URL of the external animation player
3996+
//@animation The cached animation; may be null if unknown
39963997
//@thumbnail Thumbnail of the animation; may be null if unknown
39973998
//@duration Duration of the animation, in seconds
39983999
//@width Expected width of the embedded player
39994000
//@height Expected height of the embedded player
4000-
linkPreviewTypeEmbeddedAnimationPlayer url:string thumbnail:photo duration:int32 width:int32 height:int32 = LinkPreviewType;
4001+
linkPreviewTypeEmbeddedAnimationPlayer url:string animation:animation thumbnail:photo duration:int32 width:int32 height:int32 = LinkPreviewType;
40014002

40024003
//@description The link is a link to an audio player
40034004
//@url URL of the external audio player

‎td/telegram/WebPagesManager.cpp‎

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1731,17 +1731,33 @@ td_api::object_ptr<td_api::LinkPreviewType> WebPagesManager::get_link_preview_ty
17311731
}
17321732
}
17331733
if (!web_page->embed_type_.empty() || !web_page->embed_url_.empty()) {
1734+
if (web_page->type_ == "gif") {
1735+
LOG_IF(ERROR, web_page->document_.type != Document::Type::Unknown &&
1736+
web_page->document_.type != Document::Type::Animation)
1737+
<< "Receive wrong document for " << web_page->url_;
1738+
auto animation = web_page->document_.type == Document::Type::Animation
1739+
? td_->animations_manager_->get_animation_object(web_page->document_.file_id)
1740+
: nullptr;
1741+
if (web_page->embed_type_ == "iframe") {
1742+
return td_api::make_object<td_api::linkPreviewTypeEmbeddedAnimationPlayer>(
1743+
web_page->embed_url_, std::move(animation), get_photo_object(td_->file_manager_.get(), web_page->photo_),
1744+
web_page->duration_, web_page->embed_dimensions_.width, web_page->embed_dimensions_.height);
1745+
} else if (animation != nullptr) {
1746+
return td_api::make_object<td_api::linkPreviewTypeAnimation>(std::move(animation));
1747+
} else {
1748+
if (!web_page->photo_.is_empty()) {
1749+
return td_api::make_object<td_api::linkPreviewTypePhoto>(
1750+
get_photo_object(td_->file_manager_.get(), web_page->photo_));
1751+
}
1752+
return td_api::make_object<td_api::linkPreviewTypeUnsupported>();
1753+
}
1754+
}
17341755
if (web_page->embed_type_ == "iframe") {
17351756
if (web_page->type_ == "audio") {
17361757
return td_api::make_object<td_api::linkPreviewTypeEmbeddedAudioPlayer>(
17371758
web_page->embed_url_, get_photo_object(td_->file_manager_.get(), web_page->photo_), web_page->duration_,
17381759
web_page->embed_dimensions_.width, web_page->embed_dimensions_.height);
17391760
}
1740-
if (web_page->type_ == "gif") {
1741-
return td_api::make_object<td_api::linkPreviewTypeEmbeddedAnimationPlayer>(
1742-
web_page->embed_url_, get_photo_object(td_->file_manager_.get(), web_page->photo_), web_page->duration_,
1743-
web_page->embed_dimensions_.width, web_page->embed_dimensions_.height);
1744-
}
17451761
if (web_page->type_ == "video") {
17461762
return td_api::make_object<td_api::linkPreviewTypeEmbeddedVideoPlayer>(
17471763
web_page->embed_url_, get_photo_object(td_->file_manager_.get(), web_page->photo_), web_page->duration_,
@@ -1769,23 +1785,6 @@ td_api::object_ptr<td_api::LinkPreviewType> WebPagesManager::get_link_preview_ty
17691785
return td_api::make_object<td_api::linkPreviewTypeUnsupported>();
17701786
}
17711787
}
1772-
if (web_page->type_ == "gif") {
1773-
LOG_IF(ERROR, web_page->document_.type != Document::Type::Unknown &&
1774-
web_page->document_.type != Document::Type::Animation)
1775-
<< "Receive wrong document for " << web_page->url_;
1776-
auto animation = web_page->document_.type == Document::Type::Animation
1777-
? td_->animations_manager_->get_animation_object(web_page->document_.file_id)
1778-
: nullptr;
1779-
if (animation != nullptr) {
1780-
return td_api::make_object<td_api::linkPreviewTypeAnimation>(std::move(animation));
1781-
} else {
1782-
if (!web_page->photo_.is_empty()) {
1783-
return td_api::make_object<td_api::linkPreviewTypePhoto>(
1784-
get_photo_object(td_->file_manager_.get(), web_page->photo_));
1785-
}
1786-
return td_api::make_object<td_api::linkPreviewTypeUnsupported>();
1787-
}
1788-
}
17891788
if (web_page->type_ == "video") {
17901789
LOG_IF(ERROR,
17911790
web_page->document_.type != Document::Type::Unknown && web_page->document_.type != Document::Type::Video)

0 commit comments

Comments
 (0)