From ae2182c1e5c395d2ba48b5084f358e45b78ceaf3 Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Wed, 30 Aug 2023 23:33:54 +0300 Subject: [PATCH] Removed document's requirement when it's unavailable in userpic builder. --- .../info_userpic_emoji_builder_preview.cpp | 16 ++++++++++------ .../userpic/info_userpic_emoji_builder_preview.h | 2 +- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/Telegram/SourceFiles/info/userpic/info_userpic_emoji_builder_preview.cpp b/Telegram/SourceFiles/info/userpic/info_userpic_emoji_builder_preview.cpp index c7997381c..54e3767f7 100644 --- a/Telegram/SourceFiles/info/userpic/info_userpic_emoji_builder_preview.cpp +++ b/Telegram/SourceFiles/info/userpic/info_userpic_emoji_builder_preview.cpp @@ -47,9 +47,8 @@ PreviewPainter::PreviewPainter(int size) } } -not_null PreviewPainter::document() const { - Expects(_media != nullptr); - return _media->owner(); +DocumentData *PreviewPainter::document() const { + return _media ? _media->owner() : nullptr; } void PreviewPainter::setPlayOnce(bool value) { @@ -183,7 +182,7 @@ void EmojiUserpic::result(int size, Fn done) { const auto painter = lifetime().make_state(size); // Reset to the first frame. const auto document = _painter.document(); - painter->setDocument(document, [=] { + const auto callback = [=] { auto background = GenerateGradient(Size(size), _colors, false); { @@ -194,12 +193,17 @@ void EmojiUserpic::result(int size, Fn done) { } } } - if (*_playOnce) { + if (*_playOnce && document) { done({ std::move(background), document->id, _colors }); } else { done({ std::move(background) }); } - }); + }; + if (document) { + painter->setDocument(document, callback); + } else { + callback(); + } } void EmojiUserpic::setGradientColors(std::vector colors) { diff --git a/Telegram/SourceFiles/info/userpic/info_userpic_emoji_builder_preview.h b/Telegram/SourceFiles/info/userpic/info_userpic_emoji_builder_preview.h index 13561ac79..9961c54a7 100644 --- a/Telegram/SourceFiles/info/userpic/info_userpic_emoji_builder_preview.h +++ b/Telegram/SourceFiles/info/userpic/info_userpic_emoji_builder_preview.h @@ -29,7 +29,7 @@ class PreviewPainter final { public: PreviewPainter(int size); - [[nodiscard]] not_null document() const; + [[nodiscard]] DocumentData *document() const; void setPlayOnce(bool value); void setDocument(