From e59a68cd68ccdacd84a9767e2b74471721bf12aa Mon Sep 17 00:00:00 2001 From: John Preston Date: Wed, 16 Jan 2019 22:03:04 +0400 Subject: [PATCH] Refresh wallpaper file references. --- Telegram/SourceFiles/apiwrap.cpp | 2 ++ Telegram/SourceFiles/data/data_file_origin.cpp | 15 +++++++++++++++ Telegram/SourceFiles/data/data_file_origin.h | 12 +++++++++++- Telegram/SourceFiles/mainwidget.cpp | 7 +++++-- 4 files changed, 33 insertions(+), 3 deletions(-) diff --git a/Telegram/SourceFiles/apiwrap.cpp b/Telegram/SourceFiles/apiwrap.cpp index 7ad12c2354..92612f2608 100644 --- a/Telegram/SourceFiles/apiwrap.cpp +++ b/Telegram/SourceFiles/apiwrap.cpp @@ -2829,6 +2829,8 @@ void ApiWrap::refreshFileReference( request( MTPmessages_GetSavedGifs(MTP_int(0)), [] { crl::on_main([] { Local::writeSavedGifs(); }); }); + }, [&](Data::FileOriginWallpapers data) { + request(MTPaccount_GetWallPapers(MTP_int(0))); }, [&](std::nullopt_t) { fail(); }); diff --git a/Telegram/SourceFiles/data/data_file_origin.cpp b/Telegram/SourceFiles/data/data_file_origin.cpp index 6f96e92951..3321eb61e2 100644 --- a/Telegram/SourceFiles/data/data_file_origin.cpp +++ b/Telegram/SourceFiles/data/data_file_origin.cpp @@ -52,6 +52,11 @@ struct FileReferenceAccumulator { }, [](const MTPDdocumentEmpty &data) { }); } + void push(const MTPWallPaper &data) { + data.match([&](const MTPDwallPaper &data) { + push(data.vdocument); + }); + } void push(const MTPUserProfilePhoto &data) { data.match([&](const MTPDuserProfilePhoto &data) { push(data.vphoto_small); @@ -173,6 +178,12 @@ struct FileReferenceAccumulator { }, [](const MTPDmessages_savedGifsNotModified &data) { }); } + void push(const MTPaccount_WallPapers &data) { + data.match([&](const MTPDaccount_wallPapers &data) { + push(data.vwallpapers); + }, [](const MTPDaccount_wallPapersNotModified &) { + }); + } UpdatedFileReferences result; }; @@ -237,4 +248,8 @@ UpdatedFileReferences GetFileReferences(const MTPmessages_SavedGifs &data) { return GetFileReferencesHelper(data); } +UpdatedFileReferences GetFileReferences(const MTPaccount_WallPapers &data) { + return GetFileReferencesHelper(data); +} + } // namespace Data diff --git a/Telegram/SourceFiles/data/data_file_origin.h b/Telegram/SourceFiles/data/data_file_origin.h index 6e50114f31..d4226c7c3c 100644 --- a/Telegram/SourceFiles/data/data_file_origin.h +++ b/Telegram/SourceFiles/data/data_file_origin.h @@ -60,13 +60,20 @@ struct FileOriginSavedGifs { } }; +struct FileOriginWallpapers { + inline bool operator<(const FileOriginWallpapers &) const { + return false; + } +}; + struct FileOrigin { using Variant = base::optional_variant< FileOriginMessage, FileOriginUserPhoto, FileOriginPeerPhoto, FileOriginStickerSet, - FileOriginSavedGifs>; + FileOriginSavedGifs, + FileOriginWallpapers>; FileOrigin() = default; FileOrigin(FileOriginMessage data) : data(data) { @@ -79,6 +86,8 @@ struct FileOrigin { } FileOrigin(FileOriginSavedGifs data) : data(data) { } + FileOrigin(FileOriginWallpapers data) : data(data) { + } explicit operator bool() const { return data.has_value(); @@ -121,5 +130,6 @@ UpdatedFileReferences GetFileReferences( const MTPmessages_FavedStickers &data); UpdatedFileReferences GetFileReferences(const MTPmessages_StickerSet &data); UpdatedFileReferences GetFileReferences(const MTPmessages_SavedGifs &data); +UpdatedFileReferences GetFileReferences(const MTPaccount_WallPapers &data); } // namespace Data diff --git a/Telegram/SourceFiles/mainwidget.cpp b/Telegram/SourceFiles/mainwidget.cpp index 2fb9b57b64..659c158b5f 100644 --- a/Telegram/SourceFiles/mainwidget.cpp +++ b/Telegram/SourceFiles/mainwidget.cpp @@ -1422,9 +1422,12 @@ void MainWidget::setChatBackground(const Data::WallPaper &background) { _background = std::make_unique(); _background->data = background; if (_background->data.document) { - _background->data.document->save(Data::FileOrigin(), QString()); + _background->data.document->save( + Data::FileOriginWallpapers(), + QString()); } else if (_background->data.thumb) { - _background->data.thumb->loadEvenCancelled(Data::FileOrigin()); + _background->data.thumb->loadEvenCancelled( + Data::FileOriginWallpapers()); } checkChatBackground();