Removed document's requirement when it's unavailable in userpic builder.

This commit is contained in:
23rd 2023-08-30 23:33:54 +03:00 committed by John Preston
parent 4807244682
commit ae2182c1e5
2 changed files with 11 additions and 7 deletions

View File

@ -47,9 +47,8 @@ PreviewPainter::PreviewPainter(int size)
} }
} }
not_null<DocumentData*> PreviewPainter::document() const { DocumentData *PreviewPainter::document() const {
Expects(_media != nullptr); return _media ? _media->owner() : nullptr;
return _media->owner();
} }
void PreviewPainter::setPlayOnce(bool value) { void PreviewPainter::setPlayOnce(bool value) {
@ -183,7 +182,7 @@ void EmojiUserpic::result(int size, Fn<void(UserpicBuilder::Result)> done) {
const auto painter = lifetime().make_state<PreviewPainter>(size); const auto painter = lifetime().make_state<PreviewPainter>(size);
// Reset to the first frame. // Reset to the first frame.
const auto document = _painter.document(); const auto document = _painter.document();
painter->setDocument(document, [=] { const auto callback = [=] {
auto background = GenerateGradient(Size(size), _colors, false); auto background = GenerateGradient(Size(size), _colors, false);
{ {
@ -194,12 +193,17 @@ void EmojiUserpic::result(int size, Fn<void(UserpicBuilder::Result)> done) {
} }
} }
} }
if (*_playOnce) { if (*_playOnce && document) {
done({ std::move(background), document->id, _colors }); done({ std::move(background), document->id, _colors });
} else { } else {
done({ std::move(background) }); done({ std::move(background) });
} }
}); };
if (document) {
painter->setDocument(document, callback);
} else {
callback();
}
} }
void EmojiUserpic::setGradientColors(std::vector<QColor> colors) { void EmojiUserpic::setGradientColors(std::vector<QColor> colors) {

View File

@ -29,7 +29,7 @@ class PreviewPainter final {
public: public:
PreviewPainter(int size); PreviewPainter(int size);
[[nodiscard]] not_null<DocumentData*> document() const; [[nodiscard]] DocumentData *document() const;
void setPlayOnce(bool value); void setPlayOnce(bool value);
void setDocument( void setDocument(