diff --git a/Telegram/SourceFiles/data/data_download_manager.h b/Telegram/SourceFiles/data/data_download_manager.h index 6760d14aa3..ae99be5472 100644 --- a/Telegram/SourceFiles/data/data_download_manager.h +++ b/Telegram/SourceFiles/data/data_download_manager.h @@ -29,6 +29,10 @@ enum class DownloadType { // unixtime * 1000. using DownloadDate = int64; +[[nodiscard]] inline TimeId DateFromDownloadDate(DownloadDate date) { + return date / 1000; +} + struct DownloadId { uint64 objectId = 0; DownloadType type = DownloadType::Document; diff --git a/Telegram/SourceFiles/info/downloads/info_downloads_provider.cpp b/Telegram/SourceFiles/info/downloads/info_downloads_provider.cpp index aba5e489ea..d71c693692 100644 --- a/Telegram/SourceFiles/info/downloads/info_downloads_provider.cpp +++ b/Telegram/SourceFiles/info/downloads/info_downloads_provider.cpp @@ -320,12 +320,16 @@ std::unique_ptr Provider::createLayout( return nullptr; }; + using namespace Overview::Layout; auto &songSt = st::overviewFileLayout; if (const auto file = getFile()) { - return std::make_unique( + return std::make_unique( delegate, element.item, - file, + DocumentFields{ + .document = file, + .dateOverride = Data::DateFromDownloadDate(element.started), + }, songSt); } return nullptr; diff --git a/Telegram/SourceFiles/info/media/info_media_provider.cpp b/Telegram/SourceFiles/info/media/info_media_provider.cpp index 72fecbc4ea..ba228a9632 100644 --- a/Telegram/SourceFiles/info/media/info_media_provider.cpp +++ b/Telegram/SourceFiles/info/media/info_media_provider.cpp @@ -432,12 +432,20 @@ std::unique_ptr Provider::createLayout( return nullptr; case Type::File: if (const auto file = getFile()) { - return std::make_unique(delegate, item, file, songSt); + return std::make_unique( + delegate, + item, + DocumentFields{ .document = file }, + songSt); } return nullptr; case Type::MusicFile: if (const auto file = getFile()) { - return std::make_unique(delegate, item, file, songSt); + return std::make_unique( + delegate, + item, + DocumentFields{ .document = file }, + songSt); } return nullptr; case Type::RoundVoiceFile: diff --git a/Telegram/SourceFiles/overview/overview_layout.cpp b/Telegram/SourceFiles/overview/overview_layout.cpp index 58506b6432..51319a9cfe 100644 --- a/Telegram/SourceFiles/overview/overview_layout.cpp +++ b/Telegram/SourceFiles/overview/overview_layout.cpp @@ -920,10 +920,10 @@ bool Voice::updateStatusText() { Document::Document( not_null delegate, not_null parent, - not_null document, + DocumentFields fields, const style::OverviewFileLayout &st) : RadialProgressItem(delegate, parent) -, _data(document) +, _data(fields.document) , _msgl(goToMessageClickHandler(parent)) , _namel(std::make_shared( _data, @@ -933,7 +933,9 @@ Document::Document( parent->fullId())) , _st(st) , _generic(::Layout::DocumentGenericPreview::Create(_data)) -, _date(langDateTime(base::unixtime::parse(_data->date))) +, _date(langDateTime(base::unixtime::parse(fields.dateOverride + ? fields.dateOverride + : _data->date))) , _ext(_generic.ext) , _datew(st::normalFont->width(_date)) { _name.setMarkedText( diff --git a/Telegram/SourceFiles/overview/overview_layout.h b/Telegram/SourceFiles/overview/overview_layout.h index c438c9d386..42ed18474c 100644 --- a/Telegram/SourceFiles/overview/overview_layout.h +++ b/Telegram/SourceFiles/overview/overview_layout.h @@ -335,12 +335,16 @@ private: }; +struct DocumentFields { + not_null document; + TimeId dateOverride = 0; +}; class Document final : public RadialProgressItem { public: Document( not_null delegate, not_null parent, - not_null document, + DocumentFields fields, const style::OverviewFileLayout &st); void initDimensions() override;